import Database from '../src'; import path from 'path'; import dbDriven from './plugins/db-driven'; const sync = { force: true, alter: { drop: true, } } const db = new Database({ username: 'test', password: 'test', database: 'test', host: '127.0.0.1', port: 45432, dialect: 'postgres', logging: false, define: { }, sync, }); (async () => { const tables = db.import({ directory: path.resolve(__dirname, 'tables'), }); await db.sync({ tables }); await db.plugin(dbDriven()); if (!sync.force) { await db.sequelize.drop(); await db.sync(); } const [Table, Field] = db.getModels(['tables', 'fields']); const [table] = await Table.findOrCreate({ where: { name: 'demos', }, defaults: { options: { name: 'demos', }, }, }); await db.getModel('demos').create({}); await Field.bulkCreate([ { name: 'col1', table_name: 'demos', options: { type: 'string', name: 'col1', }, }, { name: 'col2', table_name: 'demos', options: { type: 'string', name: 'col2', }, }, ]); await db.getModel('demos').create({ col1: 'col1', col2: 'col2', }); await table.createField({ name: 'col3', options: { type: 'string', name: 'col3', }, }); await db.getModel('demos').create({ col1: 'col1', col2: 'col2', col3: 'col3', }); await table.createField({ name: 'col4', options: { type: 'string', name: 'col4', }, }); await db.getModel('demos').create({ col1: 'col1', col2: 'col2', col3: 'col3', col4: 'col4', }); await table.createField({ name: 'col5', options: { type: 'string', name: 'col5', }, }); await db.getModel('demos').create({ col1: 'col1', col2: 'col2', col3: 'col3', col4: 'col4', col5: 'col5', }); await db.close(); })();