mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-16 21:00:31 +00:00
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:
55
server/src/interfaces/Expenses.ts
Normal file
55
server/src/interfaces/Expenses.ts
Normal 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>;
|
||||
}
|
||||
49
server/src/interfaces/Tenancy.ts
Normal file
49
server/src/interfaces/Tenancy.ts
Normal 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();
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
@@ -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,
|
||||
};
|
||||
Reference in New Issue
Block a user