aquameta-sync
Version:
Import from and export to filesystem from Aquameta database
74 lines (64 loc) • 1.59 kB
JavaScript
/* globals require module */
const {compose} = require('ramda');
const {client, database: db, query} = require('aquameta-datum');
module.exports = {
createTestTable,
dropTestTable,
getTestRows,
};
const executeQuery = (...args) => {
return query(client.connection())(...args);
};
const metaSchemaRel = db.relation('meta.schema');
const metaTableRel = db.relation('meta.table');
const metaColumnRel = db.relation('meta.column');
const testUserRel = db.relation('test.user');
const testUserMetaRow = compose(
db.where('schema_name', 'test'),
db.where('name', 'user'),
)(metaTableRel);
const testMetaRow = compose(db.where('name', 'test'))(metaSchemaRel);
async function executeEach(...args) {
for (const q of args) {
await executeQuery(q);
}
}
async function createTestTable() {
await executeEach(
db.insert(metaSchemaRel, {name: 'test'}),
db.insert(metaTableRel, {
schema_name: 'test',
name: 'user',
}),
db.insert(metaColumnRel, [
{
schema_name: 'test',
relation_name: 'user',
name: 'name',
type_name: 'text',
},
{
schema_name: 'test',
relation_name: 'user',
name: 'age',
type_name: 'text',
},
{
schema_name: 'test',
relation_name: 'user',
name: 'id',
type_name: 'text',
},
]),
);
}
async function dropTestTable() {
await executeEach(
db.del(testUserRel),
db.del(testUserMetaRow),
db.del(testMetaRow),
);
}
function getTestRows() {
return executeQuery(db.select(testUserRel));
}