Prepare for multi accounts support: store account for new transactions (#46)

This commit is contained in:
Thomas
2021-04-25 21:22:35 +02:00
committed by GitHub
parent ef317a86ed
commit 8cb5fd64dd
13 changed files with 158 additions and 65 deletions

View File

@@ -1,3 +1,6 @@
import { Settings, User } from '@prisma/client';
import { Account, Settings, User } from '@prisma/client';
export type UserWithSettings = User & { Settings: Settings };
export type UserWithSettings = User & {
Account: Account[];
Settings: Settings;
};

View File

@@ -2,6 +2,9 @@ import { Currency, Type } from '@prisma/client';
import { IsISO8601, IsNumber, IsString, ValidateIf } from 'class-validator';
export class CreateOrderDto {
@IsString()
accountId: string;
@IsString()
currency: Currency;

View File

@@ -118,6 +118,9 @@ export class OrderController {
const date = parseISO(data.date);
const accountId = data.accountId;
delete data.accountId;
if (data.platformId) {
const platformId = data.platformId;
delete data.platformId;
@@ -126,6 +129,11 @@ export class OrderController {
{
...data,
date,
Account: {
connect: {
id_userId: { id: accountId, userId: this.request.user.id }
}
},
Platform: { connect: { id: platformId } },
User: { connect: { id: this.request.user.id } }
},
@@ -138,6 +146,11 @@ export class OrderController {
{
...data,
date,
Account: {
connect: {
id_userId: { id: accountId, userId: this.request.user.id }
}
},
User: { connect: { id: this.request.user.id } }
},
this.request.user.id
@@ -169,6 +182,9 @@ export class OrderController {
const date = parseISO(data.date);
const accountId = data.accountId;
delete data.accountId;
if (data.platformId) {
const platformId = data.platformId;
delete data.platformId;
@@ -178,6 +194,11 @@ export class OrderController {
data: {
...data,
date,
Account: {
connect: {
id_userId: { id: accountId, userId: this.request.user.id }
}
},
Platform: { connect: { id: platformId } },
User: { connect: { id: this.request.user.id } }
},
@@ -199,6 +220,11 @@ export class OrderController {
data: {
...data,
date,
Account: {
connect: {
id_userId: { id: accountId, userId: this.request.user.id }
}
},
Platform: originalOrder.platformId
? { disconnect: true }
: undefined,

View File

@@ -2,6 +2,9 @@ import { Currency, Type } from '@prisma/client';
import { IsISO8601, IsNumber, IsString, ValidateIf } from 'class-validator';
export class UpdateOrderDto {
@IsString()
accountId: string;
@IsString()
currency: Currency;

View File

@@ -1,9 +1,10 @@
import { Currency } from '@prisma/client';
import { Account, Currency } from '@prisma/client';
import { Access } from './access.interface';
export interface User {
access: Access[];
accounts: Account[];
alias?: string;
id: string;
permissions: string[];

View File

@@ -25,6 +25,7 @@ export class UserService {
) {}
public async getUser({
Account,
alias,
id,
role,
@@ -53,6 +54,7 @@ export class UserService {
id: accessItem.id
};
}),
accounts: Account,
permissions: currentPermissions,
settings: {
baseCurrency: Settings?.currency || UserService.DEFAULT_CURRENCY,
@@ -69,7 +71,7 @@ export class UserService {
userWhereUniqueInput: Prisma.UserWhereUniqueInput
): Promise<UserWithSettings | null> {
const user = await this.prisma.user.findUnique({
include: { Settings: true },
include: { Account: true, Settings: true },
where: userWhereUniqueInput
});