You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
1.2 KiB
JavaScript

"use strict";
const { Model } = require("objection");
module.exports = function ({ db }) {
return class Item extends Model {
static tableName = "srap_items";
static get relationMappings() {
return {
aliases: {
relation: Model.HasManyRelation,
modelClass: db.Alias,
join: { from: "srap_items.id", to: "srap_aliases.itemId" }
},
tags: {
relation: Model.HasManyRelation,
modelClass: db.Tag,
join: { from: "srap_items.id", to: "srap_tags.itemId" }
},
taskResults: {
relation: Model.HasManyRelation,
modelClass: db.TaskResult,
join: { from: "srap_items.id", to: "srap_taskResults.itemId" }
},
tasksInProgress: {
relation: Model.HasManyRelation,
modelClass: db.TaskInProgress,
join: { from: "srap_items.id", to: "srap_tasksInProgress.itemId" }
},
failedTasks: {
// Not actually a many-to-many, but that's what objection calls a HasManyThrough...
// https://github.com/Vincit/objection.js/issues/1148
relation: Model.ManyToManyRelation,
modelClass: db.Failure,
join: {
from: "srap_items.id",
through: { from: "srap_task_results.itemId", to: "srap_task_results.id" },
to: "srap_failures.taskResultId"
}
}
};
};
}
};