mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
linting and use db for db Models
This commit is contained in:
parent
7613db5060
commit
aa0e84fbf6
@ -9,7 +9,7 @@ export class TransactionListInput {
|
|||||||
items: number
|
items: number
|
||||||
|
|
||||||
@Field(() => String)
|
@Field(() => String)
|
||||||
order: "ASC" | "DESC"
|
order: 'ASC' | 'DESC'
|
||||||
}
|
}
|
||||||
|
|
||||||
@ArgsType()
|
@ArgsType()
|
||||||
|
|||||||
@ -6,8 +6,8 @@ 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 } from '../../typeorm/entity/User'
|
import { User as dbUser } from '../../typeorm/entity/User'
|
||||||
import { Balance } from '../../typeorm/entity/Balance'
|
import { Balance as dbBalance } from '../../typeorm/entity/Balance'
|
||||||
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,22 +25,24 @@ 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 User.findByPubkeyHex(result.data.user.public_hex)
|
const userEntity = await dbUser.findByPubkeyHex(result.data.user.public_hex)
|
||||||
|
|
||||||
const transactions = await listTransactions(firstPage, items, order, userEntity)
|
const transactions = await listTransactions(firstPage, items, order, userEntity)
|
||||||
|
|
||||||
// get gdt sum
|
// get gdt sum
|
||||||
const resultGDTSum = await apiPost(
|
const resultGDTSum = await apiPost(`${CONFIG.GDT_API_URL}/GdtEntries/sumPerEmailApi`, {
|
||||||
`${CONFIG.GDT_API_URL}/GdtEntries/sumPerEmailApi`, {email: userEntity.email}
|
email: userEntity.email,
|
||||||
)
|
})
|
||||||
if (!resultGDTSum.success) throw new Error(resultGDTSum.data)
|
if (!resultGDTSum.success) throw new Error(resultGDTSum.data)
|
||||||
transactions.gdtSum = resultGDTSum.data.sum
|
transactions.gdtSum = resultGDTSum.data.sum
|
||||||
|
|
||||||
// get balance
|
// get balance
|
||||||
const balanceEntity = await Balance.findByUser(userEntity.id)
|
const balanceEntity = await dbBalance.findByUser(userEntity.id)
|
||||||
const now = new Date()
|
const now = new Date()
|
||||||
transactions.balance = roundFloorFrom4(balanceEntity.amount)
|
transactions.balance = roundFloorFrom4(balanceEntity.amount)
|
||||||
transactions.decay = roundFloorFrom4(calculateDecay(balanceEntity.amount, balanceEntity.recordDate, now))
|
transactions.decay = roundFloorFrom4(
|
||||||
|
calculateDecay(balanceEntity.amount, balanceEntity.recordDate, now),
|
||||||
|
)
|
||||||
transactions.decayDate = now.toString()
|
transactions.decayDate = now.toString()
|
||||||
|
|
||||||
return transactions
|
return transactions
|
||||||
|
|||||||
@ -1,49 +1,55 @@
|
|||||||
|
import { User as dbUser } from '../../typeorm/entity/User'
|
||||||
import { User } from '../../typeorm/entity/User'
|
|
||||||
import { TransactionList, Transaction } from '../models/Transaction'
|
import { TransactionList, Transaction } from '../models/Transaction'
|
||||||
import { UserTransaction } from '../../typeorm/entity/UserTransaction'
|
import { UserTransaction } from '../../typeorm/entity/UserTransaction'
|
||||||
|
|
||||||
function calculateAndAddDecayTransactions(
|
function calculateAndAddDecayTransactions(
|
||||||
userTransactions:UserTransaction[],
|
userTransactions: UserTransaction[],
|
||||||
user: User,
|
user: dbUser,
|
||||||
decay:boolean,
|
decay: boolean,
|
||||||
skipFirstTransaction:boolean
|
skipFirstTransaction: boolean,
|
||||||
): Transaction[]
|
): Transaction[] {
|
||||||
{
|
const transactions: Transaction[] = []
|
||||||
let transactions: Transaction[] = []
|
|
||||||
|
|
||||||
return transactions
|
return transactions
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export default async function listTransactions(
|
export default async function listTransactions(
|
||||||
firstPage:number,
|
firstPage: number,
|
||||||
items:number,
|
items: number,
|
||||||
order:"ASC" | "DESC",
|
order: 'ASC' | 'DESC',
|
||||||
user:User) : Promise<TransactionList>
|
user: dbUser,
|
||||||
{
|
): Promise<TransactionList> {
|
||||||
|
|
||||||
let limit = items
|
let limit = items
|
||||||
let offset = 0
|
let offset = 0
|
||||||
let skipFirstTransaction = false
|
let skipFirstTransaction = false
|
||||||
if(firstPage > 1) {
|
if (firstPage > 1) {
|
||||||
offset = (( firstPage - 1 ) * items) - 1;
|
offset = (firstPage - 1) * items - 1
|
||||||
limit++;
|
limit++
|
||||||
}
|
}
|
||||||
|
|
||||||
if(offset && order == 'ASC') {
|
if (offset && order === 'ASC') {
|
||||||
offset--;
|
offset--
|
||||||
}
|
}
|
||||||
let [userTransactions, userTransactionsCount] = await UserTransaction.findByUserPaged(user.id, limit, offset, order)
|
let [userTransactions, userTransactionsCount] = await UserTransaction.findByUserPaged(
|
||||||
|
user.id,
|
||||||
|
limit,
|
||||||
|
offset,
|
||||||
|
order,
|
||||||
|
)
|
||||||
skipFirstTransaction = userTransactionsCount > offset + limit
|
skipFirstTransaction = userTransactionsCount > offset + limit
|
||||||
const decay = !(firstPage > 1)
|
const decay = !(firstPage > 1)
|
||||||
let transactions: Transaction[] = []
|
const transactions: Transaction[] = []
|
||||||
if(userTransactions.length) {
|
if (userTransactions.length) {
|
||||||
if(order === 'DESC') {
|
if (order === 'DESC') {
|
||||||
userTransactions = userTransactions.reverse()
|
userTransactions = userTransactions.reverse()
|
||||||
}
|
}
|
||||||
let transactions = calculateAndAddDecayTransactions(userTransactions, user, decay, skipFirstTransaction)
|
let transactions = calculateAndAddDecayTransactions(
|
||||||
if(order === 'DESC') {
|
userTransactions,
|
||||||
|
user,
|
||||||
|
decay,
|
||||||
|
skipFirstTransaction,
|
||||||
|
)
|
||||||
|
if (order === 'DESC') {
|
||||||
transactions = transactions.reverse()
|
transactions = transactions.reverse()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -54,7 +60,7 @@ export default async function listTransactions(
|
|||||||
balance: 0,
|
balance: 0,
|
||||||
decay: 0,
|
decay: 0,
|
||||||
decay_date: '',
|
decay_date: '',
|
||||||
transactions: transactions
|
transactions: transactions,
|
||||||
})
|
})
|
||||||
|
|
||||||
return transactionList
|
return transactionList
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
import { BaseEntity, Entity, PrimaryGeneratedColumn, Column, OneToMany } from 'typeorm'
|
import { BaseEntity, Entity, PrimaryGeneratedColumn, Column } from 'typeorm'
|
||||||
import { UserTransaction } from './UserTransaction'
|
|
||||||
|
|
||||||
// import { Group } from "./Group"
|
// import { Group } from "./Group"
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,4 @@
|
|||||||
import { BaseEntity, Entity, PrimaryGeneratedColumn, Column, Timestamp, ManyToOne } from 'typeorm'
|
import { BaseEntity, Entity, PrimaryGeneratedColumn, Column, Timestamp } from 'typeorm'
|
||||||
import { User } from './User'
|
|
||||||
|
|
||||||
|
|
||||||
@Entity('state_user_transactions')
|
@Entity('state_user_transactions')
|
||||||
export class UserTransaction extends BaseEntity {
|
export class UserTransaction extends BaseEntity {
|
||||||
@ -22,9 +20,12 @@ export class UserTransaction extends BaseEntity {
|
|||||||
@Column({ name: 'balance_date', type: 'timestamp' })
|
@Column({ name: 'balance_date', type: 'timestamp' })
|
||||||
balanceDate: Timestamp
|
balanceDate: Timestamp
|
||||||
|
|
||||||
static findByUserPaged(userId: number, limit: number, offset: number, order: "ASC" | "DESC")
|
static findByUserPaged(
|
||||||
:Promise<[UserTransaction[], number]>
|
userId: number,
|
||||||
{
|
limit: number,
|
||||||
|
offset: number,
|
||||||
|
order: 'ASC' | 'DESC',
|
||||||
|
): Promise<[UserTransaction[], number]> {
|
||||||
return this.createQueryBuilder('userTransaction')
|
return this.createQueryBuilder('userTransaction')
|
||||||
.where('userTransaction.userId = :userId', { userId })
|
.where('userTransaction.userId = :userId', { userId })
|
||||||
.orderBy('userTransaction.balanceDate', order)
|
.orderBy('userTransaction.balanceDate', order)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user