mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
Transaction Model
This commit is contained in:
parent
00871b97da
commit
62a28f0a57
@ -2,12 +2,13 @@
|
|||||||
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
|
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
|
||||||
|
|
||||||
import { Resolver, Query, Args, Authorized, Ctx, Mutation } from 'type-graphql'
|
import { Resolver, Query, Args, Authorized, Ctx, Mutation } from 'type-graphql'
|
||||||
|
import { getCustomRepository } from 'typeorm'
|
||||||
import CONFIG from '../../config'
|
import CONFIG from '../../config'
|
||||||
import { TransactionList } from '../models/Transaction'
|
import { TransactionList } from '../models/Transaction'
|
||||||
import { TransactionListInput, TransactionSendArgs } from '../inputs/TransactionInput'
|
import { TransactionListInput, TransactionSendArgs } from '../inputs/TransactionInput'
|
||||||
import { apiGet, apiPost } from '../../apis/HttpRequest'
|
import { apiGet, apiPost } from '../../apis/HttpRequest'
|
||||||
import { User as dbUser } from '../../typeorm/entity/User'
|
import { BalanceRepository } from '../../typeorm/repository/Balance'
|
||||||
import { Balance as dbBalance } from '../../typeorm/entity/Balance'
|
import { UserRepository } from '../../typeorm/repository/User'
|
||||||
import listTransactions from './listTransactions'
|
import listTransactions from './listTransactions'
|
||||||
import { roundFloorFrom4 } from '../../util/round'
|
import { roundFloorFrom4 } from '../../util/round'
|
||||||
import { calculateDecay } from '../../util/decay'
|
import { calculateDecay } from '../../util/decay'
|
||||||
@ -25,7 +26,8 @@ export class TransactionResolver {
|
|||||||
if (!result.success) throw new Error(result.data)
|
if (!result.success) throw new Error(result.data)
|
||||||
|
|
||||||
// load user
|
// load user
|
||||||
const userEntity = await dbUser.findByPubkeyHex(result.data.user.public_hex)
|
const userRepository = getCustomRepository(UserRepository)
|
||||||
|
const userEntity = await userRepository.findByPubkeyHex(result.data.user.public_hex)
|
||||||
|
|
||||||
const transactions = await listTransactions(firstPage, items, order, userEntity)
|
const transactions = await listTransactions(firstPage, items, order, userEntity)
|
||||||
|
|
||||||
@ -37,7 +39,8 @@ export class TransactionResolver {
|
|||||||
transactions.gdtSum = resultGDTSum.data.sum
|
transactions.gdtSum = resultGDTSum.data.sum
|
||||||
|
|
||||||
// get balance
|
// get balance
|
||||||
const balanceEntity = await dbBalance.findByUser(userEntity.id)
|
const balanceRepository = getCustomRepository(BalanceRepository)
|
||||||
|
const balanceEntity = await balanceRepository.findByUser(userEntity.id)
|
||||||
if (balanceEntity) {
|
if (balanceEntity) {
|
||||||
const now = new Date()
|
const now = new Date()
|
||||||
transactions.balance = roundFloorFrom4(balanceEntity.amount)
|
transactions.balance = roundFloorFrom4(balanceEntity.amount)
|
||||||
|
|||||||
@ -27,19 +27,4 @@ export class Transaction extends BaseEntity {
|
|||||||
|
|
||||||
@OneToOne(() => TransactionCreation, (transactionCreation) => transactionCreation.transaction)
|
@OneToOne(() => TransactionCreation, (transactionCreation) => transactionCreation.transaction)
|
||||||
transactionCreation: TransactionCreation
|
transactionCreation: TransactionCreation
|
||||||
|
|
||||||
static async findByTransactionTypeId(transactionTypeId: number): Promise<Transaction[]> {
|
|
||||||
return this.createQueryBuilder('transaction')
|
|
||||||
.where('transaction.transactionTypeId = :transactionTypeId', {
|
|
||||||
transactionTypeId: transactionTypeId,
|
|
||||||
})
|
|
||||||
.getMany()
|
|
||||||
}
|
|
||||||
|
|
||||||
static async getDecayStartBlock(): Promise<Transaction | undefined> {
|
|
||||||
return this.createQueryBuilder('transaction')
|
|
||||||
.where('transaction.transactionTypeId = :transactionTypeId', { transactionTypeId: 9 })
|
|
||||||
.orderBy('received', 'ASC')
|
|
||||||
.getOne()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
28
backend/src/typeorm/repository/Transaction.ts
Normal file
28
backend/src/typeorm/repository/Transaction.ts
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
import { EntityRepository, Repository } from 'typeorm'
|
||||||
|
import { Transaction } from '../entity/Transaction'
|
||||||
|
|
||||||
|
@EntityRepository(Transaction)
|
||||||
|
export class TransactionRepository extends Repository<Transaction> {
|
||||||
|
async findDecayStartBlock(): Promise<Transaction | undefined> {
|
||||||
|
return this.createQueryBuilder('transaction')
|
||||||
|
.where('transaction.transactionTypeId = :transactionTypeId', { transactionTypeId: 9 })
|
||||||
|
.orderBy('received', 'ASC')
|
||||||
|
.getOne()
|
||||||
|
}
|
||||||
|
|
||||||
|
async joinFullTransactionsByIds(transactionIds: number[]): Promise<Transaction[]> {
|
||||||
|
return this.createQueryBuilder('transaction')
|
||||||
|
.where('transaction.id IN (:...transactions)', { transactions: transactionIds })
|
||||||
|
.leftJoinAndSelect(
|
||||||
|
'transaction.transactionSendCoin',
|
||||||
|
'transactionSendCoin',
|
||||||
|
// 'transactionSendCoin.transaction_id = transaction.id',
|
||||||
|
)
|
||||||
|
.leftJoinAndSelect(
|
||||||
|
'transaction.transactionCreation',
|
||||||
|
'transactionCreation',
|
||||||
|
// 'transactionSendCoin.transaction_id = transaction.id',
|
||||||
|
)
|
||||||
|
.getMany()
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user