Fix for Incoming Invoices
This commit is contained in:
@@ -136,6 +136,27 @@ function getTenantColumn(resource: string, table: any) {
|
||||
return table[tenantKey]
|
||||
}
|
||||
|
||||
function getRelationConfig(relation: string) {
|
||||
const candidateKeys = [
|
||||
relation,
|
||||
`${relation}s`,
|
||||
]
|
||||
|
||||
if (relation.endsWith("y")) {
|
||||
candidateKeys.push(`${relation.slice(0, -1)}ies`)
|
||||
}
|
||||
|
||||
if (/(s|x|z|ch|sh)$/.test(relation)) {
|
||||
candidateKeys.push(`${relation}es`)
|
||||
}
|
||||
|
||||
for (const key of candidateKeys) {
|
||||
if (resourceConfig[key]) return resourceConfig[key]
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
|
||||
function isDateLikeField(key: string) {
|
||||
if (key === "deliveryDateType") return false
|
||||
if (key.includes("_at") || key.endsWith("At")) return true
|
||||
@@ -261,7 +282,7 @@ export default async function resourceRoutes(server: FastifyInstance) {
|
||||
|
||||
if (config.mtoLoad) {
|
||||
config.mtoLoad.forEach(rel => {
|
||||
const relConfig = resourceConfig[rel + "s"] || resourceConfig[rel]
|
||||
const relConfig = getRelationConfig(rel)
|
||||
if (relConfig) {
|
||||
const relTable = relConfig.table
|
||||
|
||||
@@ -307,7 +328,8 @@ export default async function resourceRoutes(server: FastifyInstance) {
|
||||
ids[rel] = [...new Set(rows.map(r => r[rel]).filter(Boolean))];
|
||||
})
|
||||
for await (const rel of config.mtoLoad) {
|
||||
const relConf = resourceConfig[rel + "s"] || resourceConfig[rel];
|
||||
const relConf = getRelationConfig(rel)
|
||||
if (!relConf) continue
|
||||
const relTab = relConf.table
|
||||
lists[rel] = ids[rel].length ? await server.db.select().from(relTab).where(inArray(relTab.id, ids[rel])) : []
|
||||
maps[rel] = Object.fromEntries(lists[rel].map((i: any) => [i.id, i]));
|
||||
@@ -376,7 +398,7 @@ export default async function resourceRoutes(server: FastifyInstance) {
|
||||
|
||||
if (config.mtoLoad) {
|
||||
config.mtoLoad.forEach(rel => {
|
||||
const relConfig = resourceConfig[rel + "s"] || resourceConfig[rel];
|
||||
const relConfig = getRelationConfig(rel)
|
||||
if (relConfig) {
|
||||
const relTable = relConfig.table;
|
||||
|
||||
@@ -457,7 +479,7 @@ export default async function resourceRoutes(server: FastifyInstance) {
|
||||
let distinctQuery = server.db.select({ v: col }).from(table).$dynamic();
|
||||
if (config.mtoLoad) {
|
||||
config.mtoLoad.forEach(rel => {
|
||||
const relConfig = resourceConfig[rel + "s"] || resourceConfig[rel];
|
||||
const relConfig = getRelationConfig(rel)
|
||||
if (!relConfig) return;
|
||||
const relTable = relConfig.table;
|
||||
if (relTable !== table) {
|
||||
@@ -496,7 +518,8 @@ export default async function resourceRoutes(server: FastifyInstance) {
|
||||
ids[rel] = [...new Set(rows.map(r => r[rel]).filter(Boolean))];
|
||||
});
|
||||
for await (const rel of config.mtoLoad) {
|
||||
const relConf = resourceConfig[rel + "s"] || resourceConfig[rel];
|
||||
const relConf = getRelationConfig(rel)
|
||||
if (!relConf) continue
|
||||
const relTab = relConf.table;
|
||||
lists[rel] = ids[rel].length ? await server.db.select().from(relTab).where(inArray(relTab.id, ids[rel])) : [];
|
||||
maps[rel] = Object.fromEntries(lists[rel].map((i: any) => [i.id, i]));
|
||||
@@ -567,7 +590,8 @@ export default async function resourceRoutes(server: FastifyInstance) {
|
||||
if (resourceConfig[resource].mtoLoad) {
|
||||
for await (const relation of resourceConfig[resource].mtoLoad) {
|
||||
if (data[relation]) {
|
||||
const relConf = resourceConfig[relation + "s"] || resourceConfig[relation];
|
||||
const relConf = getRelationConfig(relation)
|
||||
if (!relConf) continue
|
||||
const relTable = relConf.table
|
||||
const relData = await server.db.select().from(relTable).where(eq(relTable.id, data[relation]))
|
||||
data[relation] = relData[0] || null
|
||||
|
||||
Reference in New Issue
Block a user