refactoring: media system.

This commit is contained in:
Ahmed Bouhuolia
2020-10-07 21:30:16 +02:00
parent 681fa0560e
commit 15dca0a7d2
14 changed files with 572 additions and 173 deletions

View File

@@ -1,6 +1,7 @@
import { Model } from 'objection';
import TenantModel from 'models/TenantModel';
import { viewRolesBuilder } from 'lib/ViewRolesBuilder';
import Media from './Media';
export default class Expense extends TenantModel {
/**
@@ -24,6 +25,11 @@ export default class Expense extends TenantModel {
return ['createdAt', 'updatedAt'];
}
static get media () {
return true;
}
/**
* Model modifiers.
*/
@@ -55,7 +61,6 @@ export default class Expense extends TenantModel {
query.where('payment_account_id', accountId);
}
},
viewRolesBuilder(query, conditionals, expression) {
viewRolesBuilder(conditionals, expression)(query);
},
@@ -68,6 +73,7 @@ export default class Expense extends TenantModel {
static get relationMappings() {
const Account = require('models/Account');
const ExpenseCategory = require('models/ExpenseCategory');
const Media = require('models/Media');
return {
paymentAccount: {
@@ -86,6 +92,18 @@ export default class Expense extends TenantModel {
to: 'expense_transaction_categories.expenseId',
},
},
media: {
relation: Model.ManyToManyRelation,
modelClass: Media.default,
join: {
from: 'expenses_transactions.id',
through: {
from: 'media_links.model_id',
to: 'media_links.media_id',
},
to: 'media.id',
},
},
};
}

View File

@@ -1,3 +1,4 @@
import { Model } from 'objection';
import TenantModel from 'models/TenantModel';
export default class Media extends TenantModel {
@@ -7,4 +8,29 @@ export default class Media extends TenantModel {
static get tableName() {
return 'media';
}
/**
* Model timestamps.
*/
get timestamps() {
return ['createdAt', 'updatedAt'];
}
/**
* Relationship mapping.
*/
static get relationMappings() {
const MediaLink = require('models/MediaLink');
return {
links: {
relation: Model.HasManyRelation,
modelClass: MediaLink.default,
join: {
from: 'media.id',
to: 'media_links.media_id',
},
},
};
}
}

View File

@@ -0,0 +1,8 @@
export default class ResourceableModel {
static get resourceable() {
return true;
}
}