mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-19 14:20: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:
@@ -1,4 +1,4 @@
|
||||
import TenantRepository from '@/repositories/TenantRepository';
|
||||
import TenantRepository from 'repositories/TenantRepository';
|
||||
|
||||
export default class AccountRepository extends TenantRepository {
|
||||
models: any;
|
||||
@@ -35,7 +35,7 @@ export default class AccountRepository extends TenantRepository {
|
||||
* Retrieve all accounts on the storage.
|
||||
* @return {}
|
||||
*/
|
||||
async allAccounts() {
|
||||
allAccounts() {
|
||||
const { Account } = this.models;
|
||||
return this.cache.get('accounts', async () => {
|
||||
return Account.query();
|
||||
@@ -46,10 +46,22 @@ export default class AccountRepository extends TenantRepository {
|
||||
* Retrieve account of the given account slug.
|
||||
* @param {string} slug
|
||||
*/
|
||||
async getBySlug(slug: string) {
|
||||
getBySlug(slug: string) {
|
||||
const { Account } = this.models;
|
||||
return this.cache.get(`accounts.slug.${slug}`, () => {
|
||||
return Account.query().findOne('slug', slug);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the account by the given id.
|
||||
* @param {number} id - Account id.
|
||||
*/
|
||||
getById(id: number) {
|
||||
const { Account } = this.models;
|
||||
return this.cache.get(`accounts.id.${id}`, () => {
|
||||
return Account.query().findById(id);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import TenantRepository from '@/repositories/TenantRepository';
|
||||
import TenantRepository from 'repositories/TenantRepository';
|
||||
|
||||
export default class AccountTypeRepository extends TenantRepository {
|
||||
cache: any;
|
||||
@@ -27,4 +27,19 @@ export default class AccountTypeRepository extends TenantRepository {
|
||||
return AccountType.query().findById(accountTypeId);
|
||||
});
|
||||
}
|
||||
|
||||
getByKeys(keys: string[]) {
|
||||
const { AccountType } = this.models;
|
||||
return AccountType.query().whereIn('key', keys);
|
||||
}
|
||||
|
||||
getByKey(key: string) {
|
||||
const { AccountType } = this.models;
|
||||
return AccountType.query().findOne('key', key);
|
||||
}
|
||||
|
||||
getByRootType(rootType: string) {
|
||||
const { AccountType } = this.models;
|
||||
return AccountType.query().where('root_type', rootType);
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Customer } from '@/models';
|
||||
import { Customer } from 'models';
|
||||
|
||||
export default class CustomerRepository {
|
||||
|
||||
|
||||
46
server/src/repositories/ExpenseRepository.ts
Normal file
46
server/src/repositories/ExpenseRepository.ts
Normal file
@@ -0,0 +1,46 @@
|
||||
import TenantRepository from "./TenantRepository";
|
||||
import { IExpense } from 'interfaces';
|
||||
|
||||
export default class ExpenseRepository extends TenantRepository {
|
||||
models: any;
|
||||
repositories: any;
|
||||
cache: any;
|
||||
|
||||
constructor(tenantId: number) {
|
||||
super(tenantId);
|
||||
|
||||
this.models = this.tenancy.models(tenantId);
|
||||
this.cache = this.tenancy.cache(tenantId);
|
||||
}
|
||||
|
||||
getById(expenseId: number) {
|
||||
const { Expense } = this.models;
|
||||
return this.cache.get(`expense.id.${expenseId}`, () => {
|
||||
return Expense.query().findById(expenseId);
|
||||
})
|
||||
}
|
||||
|
||||
create(expense: IExpense) {
|
||||
const { Expense } = this.models;
|
||||
return Expense.query().insert({ ...expense });
|
||||
}
|
||||
|
||||
update(expenseId: number, expense: IExpense) {
|
||||
const { Expense } = this.models;
|
||||
return Expense.query().patchAndFetchById(expenseId, { ...expense });
|
||||
}
|
||||
|
||||
publish(expenseId: number) {
|
||||
|
||||
}
|
||||
|
||||
delete(expenseId: number) {
|
||||
const { Expense } = this.models;
|
||||
return Expense.query().findById(expenseId).delete();
|
||||
}
|
||||
|
||||
bulkDelete(expensesIds: number[]) {
|
||||
const { Expense } = this.models;
|
||||
return Expense.query().whereIn('id', expensesIds).delete();
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
import { omit } from 'lodash';
|
||||
import BaseModelRepository from '@/repositories/BaseModelRepository';
|
||||
import { PaymentReceiveEntry } from '@/models';
|
||||
import BaseModelRepository from 'repositories/BaseModelRepository';
|
||||
import { PaymentReceiveEntry } from 'models';
|
||||
|
||||
export default class PaymentReceiveEntryRepository extends BaseModelRepository {
|
||||
/**
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { omit } from 'lodash';
|
||||
import { PaymentReceiveEntry } from '@/models';
|
||||
import BaseModelRepository from '@/repositories/BaseModelRepository';
|
||||
import { PaymentReceiveEntry } from 'models';
|
||||
import BaseModelRepository from 'repositories/BaseModelRepository';
|
||||
|
||||
export default class PaymentReceiveRepository extends BaseModelRepository {
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Resource } from '@/models';
|
||||
import BaseModelRepository from '@/repositories/BaseModelRepository';
|
||||
import { Resource } from 'models';
|
||||
import BaseModelRepository from 'repositories/BaseModelRepository';
|
||||
|
||||
export default class ResourceRepository extends BaseModelRepository{
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Container } from 'typedi';
|
||||
import TenancyService from '@/services/Tenancy/TenancyService';
|
||||
import TenancyService from 'services/Tenancy/TenancyService';
|
||||
|
||||
export default class TenantRepository {
|
||||
tenantId: number;
|
||||
|
||||
Reference in New Issue
Block a user