feat: remove path alias.

feat: remove Webpack and depend on nodemon.
feat: refactoring expenses.
feat: optimize system users with caching.
feat: architecture tenant optimize.
This commit is contained in:
Ahmed Bouhuolia
2020-09-15 00:51:39 +02:00
parent ad00f140d1
commit a22c8395f3
293 changed files with 3391 additions and 1637 deletions

View File

@@ -0,0 +1,55 @@
export interface IExpense {
id: number,
totalAmount: number,
currencyCode: string,
description?: string,
paymentAccountId: number,
peyeeId?: number,
referenceNo?: string,
published: boolean,
userId: number,
paymentDate: Date,
categories: IExpenseCategory[],
}
export interface IExpenseCategory {
expenseAccountId: number,
index: number,
description: string,
expenseId: number,
amount: number,
}
export interface IExpenseDTO {
currencyCode: string,
description?: string,
paymentAccountId: number,
peyeeId?: number,
referenceNo?: string,
published: boolean,
userId: number,
paymentDate: Date,
categories: IExpenseCategoryDTO[],
}
export interface IExpenseCategoryDTO {
expenseAccountId: number,
index: number,
description?: string,
expenseId: number,
};
export interface IExpensesService {
newExpense(tenantid: number, expenseDTO: IExpenseDTO): Promise<IExpense>;
editExpense(tenantid: number, expenseId: number, expenseDTO: IExpenseDTO): void;
publishExpense(tenantId: number, expenseId: number): Promise<void>;
deleteExpense(tenantId: number, expenseId: number): Promise<void>;
deleteBulkExpenses(tenantId: number, expensesIds: number[]): Promise<void>;
publishBulkExpenses(tenantId: number, expensesIds: number[]): Promise<void>;
}

View File

@@ -0,0 +1,49 @@
import { Knex } from 'knex';
export interface ITenant {
id: number,
organizationId: string,
initializedAt: Date|null,
seededAt: Date|null,
createdAt: Date|null,
}
export interface ITenantDBManager {
constructor();
databaseExists(tenant: ITenant): Promise<boolean>;
createDatabase(tenant: ITenant): Promise<void>;
migrate(tenant: ITenant): Promise<void>;
seed(tenant: ITenant): Promise<void>;
setupKnexInstance(tenant: ITenant): Knex;
getKnexInstance(tenantId: number): Knex;
}
export interface ITenantManager {
tenantDBManager: ITenantDBManager;
tenant: ITenant;
constructor(): void;
createTenant(): Promise<ITenant>;
createDatabase(tenant: ITenant): Promise<void>;
hasDatabase(tenant: ITenant): Promise<boolean>;
dropTenant(tenant: ITenant): Promise<void>;
migrateTenant(tenant: ITenant): Promise<void>;
seedTenant(tenant: ITenant): Promise<void>;
setupKnexInstance(tenant: ITenant): Knex;
getKnexInstance(tenantId: number): Knex;
}
export interface ISystemService {
cache();
repositories();
knex();
dbManager();
}

View File

@@ -1,13 +1,33 @@
export interface ISystemUser {
id: number,
firstName: string,
lastName: string,
active: boolean,
password: string,
email: string,
phoneNumber: string,
roleId: number,
tenantId: number,
inviteAcceptAt: Date,
lastLoginAt: Date,
}
export interface ISystemUserDTO {
firstName: string,
lastName: string,
password: string,
phoneNumber: string,
active: boolean,
email: string,
}
export interface IInviteUserInput {
firstName: string,
lastName: string,
phoneNumber: string,
password: string,
}

View File

@@ -66,6 +66,19 @@ import {
ICustomerNewDTO,
ICustomerEditDTO,
} from './Contact';
import {
IExpense,
IExpenseCategory,
IExpenseDTO,
IExpenseCategoryDTO,
IExpensesService,
} from './Expenses';
import {
ITenant,
ITenantDBManager,
ITenantManager,
ISystemService,
} from './Tenancy';
export {
IAccount,
@@ -126,4 +139,15 @@ export {
ICustomer,
ICustomerNewDTO,
ICustomerEditDTO,
IExpense,
IExpenseCategory,
IExpenseDTO,
IExpenseCategoryDTO,
IExpensesService,
ITenant,
ITenantDBManager,
ITenantManager,
ISystemService,
};