78 lines
1.7 KiB
JavaScript
78 lines
1.7 KiB
JavaScript
const knex = require('knex')({
|
|
client: 'pg',
|
|
connection: {
|
|
host: 'yhm.ink',
|
|
user: 'postgres',
|
|
password: '123456',
|
|
database: 'sandbox',
|
|
port: 54321,
|
|
},
|
|
// connection:`postgres://postgres:123456@yhm.ink:54321/sandbox`
|
|
})
|
|
|
|
async function createTableIfNotExist({ tableName, columns }) {
|
|
const exists = await knex.schema.hasTable(tableName)
|
|
if (!exists) {
|
|
await knex.schema.createTable(tableName, (table) => {
|
|
table.increments('id').primary()
|
|
table.timestamp('created_at').defaultTo(knex.fn.now())
|
|
table.timestamp('updated_at').defaultTo(knex.fn.now())
|
|
columns.forEach((column) => {
|
|
const { name, type, references } = column
|
|
const tableExist = table[type](name)
|
|
references && tableExist.references(references).onDelete('CASCADE')
|
|
})
|
|
})
|
|
console.log(`table ${tableName} created`)
|
|
} else {
|
|
console.log(`table ${tableName} exists`)
|
|
}
|
|
}
|
|
|
|
async function createTables(tables) {
|
|
for (const table of tables) {
|
|
await createTableIfNotExist(table)
|
|
}
|
|
}
|
|
|
|
const tables = [
|
|
{
|
|
tableName: 'types',
|
|
columns: [
|
|
{ name: 'name', type: 'string' },
|
|
{ name: 'parent_id', type: 'integer', references: 'types.id' },
|
|
],
|
|
},
|
|
{
|
|
tableName: 'codes',
|
|
columns: [
|
|
{
|
|
name: 'type_id',
|
|
type: 'integer',
|
|
references: 'types.id',
|
|
},
|
|
{
|
|
name: 'title',
|
|
type: 'string',
|
|
},
|
|
{
|
|
name: 'description',
|
|
type: 'string',
|
|
},
|
|
{
|
|
name: 'code',
|
|
type: 'json',
|
|
},
|
|
{
|
|
name: 'preview',
|
|
type: 'text',
|
|
},
|
|
],
|
|
},
|
|
]
|
|
|
|
createTables(tables)
|
|
module.exports = {
|
|
knex,
|
|
}
|