- feat: remove unnecessary migrations, controllers and models files.

- feat: metable store
- feat: metable store with settings store.
- feat: settings middleware to auto-save and load.
- feat: DI db manager to master container.
- feat: write some logs to sale invoices.
This commit is contained in:
Ahmed Bouhuolia
2020-09-03 16:51:48 +02:00
parent abefba22ee
commit 9ee7ed89ec
98 changed files with 1697 additions and 2052 deletions

View File

@@ -1,60 +0,0 @@
import TenantModel from '@/models/Model';
export default class Budget extends TenantModel {
/**
* Table name
*/
static get tableName() {
return 'budgets';
}
static get virtualAttributes() {
return ['rangeBy', 'rangeIncrement'];
}
/**
* Model modifiers.
*/
static get modifiers() {
return {
filterByYear(query, year) {
query.where('year', year);
},
filterByIncomeStatement(query) {
query.where('account_types', 'income_statement');
},
filterByProfitLoss(query) {
query.where('accounts_types', 'profit_loss');
},
};
}
get rangeBy() {
switch (this.period) {
case 'half-year':
case 'quarter':
return 'month';
default:
return this.period;
}
}
get rangeIncrement() {
switch (this.period) {
case 'half-year':
return 6;
case 'quarter':
return 3;
default:
return 1;
}
}
get rangeOffset() {
switch (this.period) {
case 'half-year': return 5;
case 'quarter': return 2;
default: return 0;
}
}
}

View File

@@ -1,10 +0,0 @@
import TenantModel from '@/models/TenantModel';
export default class Budget extends TenantModel {
/**
* Table name
*/
static get tableName() {
return 'budget_entries';
}
}

View File

@@ -1,5 +1,4 @@
import TenantModel from '@/models/TenantModel';
import MetableCollection from '@/lib/Metable/MetableCollection';
import definedOptions from '@/data/options';
@@ -11,27 +10,6 @@ export default class Option extends TenantModel {
return 'options';
}
/**
* Override the model query.
* @param {...any} args -
*/
static query(...args) {
return super.query(...args).runAfter((result) => {
if (result instanceof MetableCollection) {
result.setModel(this.tenant());
result.setExtraColumns(['group']);
}
return result;
});
}
/**
* Model collection.
*/
static get collection() {
return MetableCollection;
}
/**
* Validates the given options is defined or either not.
* @param {Array} options

View File

@@ -1,43 +0,0 @@
import { Model } from 'objection';
import path from 'path';
import TenantModel from '@/models/TenantModel';
export default class Permission extends TenantModel {
/**
* Table name of Role model.
* @type {String}
*/
static get tableName() {
return 'permissions';
}
/**
* Relationship mapping.
*/
static get relationMappings() {
const Role = require('@/models/Role');
return {
/**
* Permission model may belongs to role model.
*/
// role: {
// relation: Model.BelongsToOneRelation,
// modelBase: path.join(__dirname, 'Role').bindKnex(this.knexBinded),
// join: {
// from: 'permissions.role_id',
// to: 'roles.id',
// },
// },
// resource: {
// relation: Model.BelongsToOneRelation,
// modelBase: path.join(__dirname, 'Resource'),
// join: {
// from: 'permissions.',
// to: '',
// }
// }
};
}
}

View File

@@ -31,7 +31,6 @@ export default class Resource extends mixin(TenantModel, [CachableModel]) {
static get relationMappings() {
const View = require('@/models/View');
const ResourceField = require('@/models/ResourceField');
const Permission = require('@/models/Permission');
return {
/**
@@ -57,22 +56,6 @@ export default class Resource extends mixin(TenantModel, [CachableModel]) {
to: 'resource_fields.resourceId',
},
},
/**
* Resource model may has many associated permissions.
*/
permissions: {
relation: Model.ManyToManyRelation,
modelClass: this.relationBindKnex(Permission.default),
join: {
from: 'resources.id',
through: {
from: 'role_has_permissions.resourceId',
to: 'role_has_permissions.permissionId',
},
to: 'permissions.id',
},
},
};
}
}

View File

@@ -1,5 +1,4 @@
import TenantModel from '@/models/TenantModel';
import ResourceFieldMetadataCollection from '@/collection/ResourceFieldMetadataCollection';
export default class ResourceFieldMetadata extends TenantModel {
/**
@@ -8,11 +7,4 @@ export default class ResourceFieldMetadata extends TenantModel {
static get tableName() {
return 'resource_custom_fields_metadata';
}
/**
* Override the resource field metadata collection.
*/
static get collection() {
return ResourceFieldMetadataCollection;
}
}

View File

@@ -1,91 +0,0 @@
import { Model } from 'objection';
import TenantModel from '@/models/TenantModel';
export default class Role extends TenantModel {
/**
* Table name of Role model.
* @type {String}
*/
static get tableName() {
return 'roles';
}
/**
* Timestamp columns.
*/
static get hasTimestamps() {
return false;
}
/**
* Relationship mapping.
*/
static get relationMappings() {
const Permission = require('@/models/Permission');
const Resource = require('@/models/Resource');
const User = require('@/models/TenantUser');
const ResourceField = require('@/models/ResourceField');
return {
/**
* Role may has many permissions.
*/
permissions: {
relation: Model.ManyToManyRelation,
modelClass: Permission.default.bindKnex(this.knexBinded),
join: {
from: 'roles.id',
through: {
from: 'role_has_permissions.roleId',
to: 'role_has_permissions.permissionId',
},
to: 'permissions.id',
},
},
/**
* Role may has many resources.
*/
resources: {
relation: Model.ManyToManyRelation,
modelClass: Resource.default.bindKnex(this.knexBinded),
join: {
from: 'roles.id',
through: {
from: 'role_has_permissions.roleId',
to: 'role_has_permissions.resourceId',
},
to: 'resources.id',
},
},
/**
* Role may has resource field.
*/
field: {
relation: Model.BelongsToOneRelation,
modelClass: ResourceField.default.bindKnex(this.knexBinded),
join: {
from: 'roles.fieldId',
to: 'resource_fields.id',
},
},
/**
* Role may has many associated users.
*/
users: {
relation: Model.ManyToManyRelation,
modelClass: User.default.bindKnex(this.knexBinded),
join: {
from: 'roles.id',
through: {
from: 'user_has_roles.roleId',
to: 'user_has_roles.userId',
},
to: 'users.id',
},
},
};
}
}

View File

@@ -1,7 +1,5 @@
import bcrypt from 'bcryptjs';
import { Model } from 'objection';
import TenantModel from '@/models/TenantModel';
// import PermissionsService from '@/services/PermissionsService';
export default class TenantUser extends TenantModel {
/**
@@ -24,29 +22,7 @@ export default class TenantUser extends TenantModel {
static get timestamps() {
return ['createdAt', 'updatedAt'];
}
/**
* Relationship mapping.
*/
static get relationMappings() {
const Role = require('@/models/Role');
return {
roles: {
relation: Model.ManyToManyRelation,
modelClass: this.relationBindKnex(Role.default),
join: {
from: 'users.id',
through: {
from: 'user_has_roles.userId',
to: 'user_has_roles.roleId',
},
to: 'roles.id',
},
},
};
}
/**
* Verify the password of the user.
* @param {String} password - The given password.