27 lines
770 B
Text
27 lines
770 B
Text
|
#!/usr/bin/env actual-cli-runner.js
|
||
|
const { schema } = require('../src/server/aql/schema');
|
||
|
const table = process.argv[3];
|
||
|
|
||
|
if (table == null || table === 'transactions') {
|
||
|
let fields = Object.keys(schema.transactions).map(fieldName => {
|
||
|
let desc = schema.transactions[fieldName];
|
||
|
let field = `t.${desc.name || fieldName}`;
|
||
|
|
||
|
if (field === 't.description') {
|
||
|
field = 'pm.targetId';
|
||
|
} else if (field === 't.category') {
|
||
|
field = 'cm.transferId';
|
||
|
}
|
||
|
|
||
|
return `${field} AS ${fieldName}`;
|
||
|
});
|
||
|
|
||
|
console.log(`
|
||
|
DROP VIEW IF EXISTS v_transactions;
|
||
|
CREATE VIEW v_transactions AS
|
||
|
SELECT ${fields.join(', ')} FROM transactions t
|
||
|
LEFT JOIN category_mapping cm ON cm.id = t.category
|
||
|
LEFT JOIN payee_mapping pm ON pm.id = t.description
|
||
|
`);
|
||
|
}
|