This commit is contained in:
Ahmed Bouhuolia
2020-03-16 00:06:15 +02:00
parent 56701951b7
commit 73711384f6
7925 changed files with 18478 additions and 959 deletions

View File

@@ -2,6 +2,7 @@
import { Model } from 'objection';
import { flatten } from 'lodash';
import BaseModel from '@/models/Model';
import {viewRolesBuilder} from '@/lib/ViewRolesBuilder';
export default class Account extends BaseModel {
/**
@@ -21,6 +22,9 @@ export default class Account extends BaseModel {
query.whereIn('accoun_type_id', typesIds);
}
},
viewRolesBuilder(query, conditionals, expression) {
viewRolesBuilder(conditionals, expression)(query);
},
};
}

View File

@@ -1,6 +1,6 @@
import { Model } from 'objection';
import BaseModel from '@/models/Model';
import {viewRolesBuilder} from '@/lib/ViewRolesBuilder';
export default class Expense extends BaseModel {
/**
* Table name
@@ -44,6 +44,14 @@ export default class Expense extends BaseModel {
query.where('payment_account_id', accountId);
}
},
viewRolesBuilder(query, conditionals, expression) {
viewRolesBuilder(conditionals, expression)(query);
},
orderBy(query) {
}
};
}

View File

@@ -1,4 +1,6 @@
import { Model } from 'objection';
import {transform, snakeCase} from 'lodash';
import {mapKeysDeep} from '@/utils';
export default class ModelBase extends Model {
static get collection() {
@@ -13,4 +15,13 @@ export default class ModelBase extends Model {
return result;
});
}
$formatJson(json, opt) {
const transformed = mapKeysDeep(json, (value, key) => {
return snakeCase(key);
});
const parsedJson = super.$formatJson(transformed, opt);
return parsedJson;
}
}

View File

@@ -24,6 +24,7 @@ export default class Role extends BaseModel {
const Permission = require('@/models/Permission');
const Resource = require('@/models/Resource');
const User = require('@/models/User');
const ResourceField = require('@/models/ResourceField');
return {
/**
@@ -58,6 +59,18 @@ export default class Role extends BaseModel {
},
},
/**
* Role may has resource field.
*/
field: {
relation: Model.BelongsToOneRelation,
modelClass: ResourceField.default,
join: {
from: 'roles.fieldId',
to: 'resource_fields.id',
}
},
/**
* Role may has many associated users.
*/

View File

@@ -6,6 +6,10 @@ import BaseModel from '@/models/Model';
export default class User extends BaseModel {
// ...PermissionsService
static get virtualAttributes() {
return ['fullName'];
}
/**
* Table name
*/
@@ -43,4 +47,8 @@ export default class User extends BaseModel {
verifyPassword(password) {
return bcrypt.compareSync(password, this.password);
}
fullName() {
return `${this.firstName} ${this.lastName}`;
}
}

View File

@@ -39,19 +39,19 @@ export default class View extends BaseModel {
modelClass: ViewColumn.default,
join: {
from: 'views.id',
to: 'view_has_columns.view_id',
to: 'view_has_columns.viewId',
},
},
/**
* View model may has many view roles.
*/
viewRoles: {
roles: {
relation: Model.HasManyRelation,
modelClass: ViewRole.default,
join: {
from: 'views.id',
to: 'view_roles.view_id',
to: 'view_roles.viewId',
},
},
};

View File

@@ -1,8 +1,21 @@
import { Model } from 'objection';
import path from 'path';
import BaseModel from '@/models/Model';
export default class ViewRole extends BaseModel {
/**
* Virtual attributes.
*/
static get virtualAttributes() {
return ['comparators'];
}
static get comparators() {
return [
'equals', 'not_equal', 'contains', 'not_contain',
];
}
/**
* Table name.
*/
@@ -21,18 +34,33 @@ export default class ViewRole extends BaseModel {
* Relationship mapping.
*/
static get relationMappings() {
const ResourceField = require('@/models/ResourceField');
const View = require('@/models/View');
return {
/**
* View role model may belongs to view model.
*/
view: {
relation: Model.BelongsToOneRelation,
modelBase: path.join(__dirname, 'View'),
modelClass: View.default,
join: {
from: 'view_roles.view_id',
from: 'view_roles.viewId',
to: 'views.id',
},
},
/**
* View role model may belongs to resource field model.
*/
field: {
relation: Model.BelongsToOneRelation,
modelClass: ResourceField.default,
join: {
from: 'view_roles.fieldId',
to: 'resource_fields.id',
},
},
};
}
}