import _ from "lodash"; import { DefaultFields, QueueFields, } from "../types"; const QueueFieldNames = QueueFields.map((f) => f.fieldName); export default function ({ dbSchema }) { const finaldbSchema = _.cloneDeep(dbSchema); finaldbSchema.tables = finaldbSchema.tables.map((t) => { const newTable = _.cloneDeep(t); newTable.fields = newTable.fields.filter((f) => !f.fieldName?.match(/^(id|created_at|updated_at)$/)); newTable.fields.unshift(...DefaultFields); if (newTable.isQueue) { newTable.fields = newTable.fields.filter((f) => !QueueFieldNames.includes(f.fieldName)); newTable.fields.push(...QueueFields); const indexName = `idx_${newTable.tableName}_queue`; newTable.indexes = (newTable.indexes || []).filter((idx) => idx.indexName !== indexName); newTable.indexes.push({ indexName, indexTableFields: ["status", "available_at"], }); } return newTable; }); return finaldbSchema; }