ionian/src/database.ts
2021-02-22 23:08:44 +09:00

36 lines
1016 B
TypeScript

import { existsSync } from 'fs';
import Knex from 'knex';
import {Knex as KnexConfig} from './config';
import { get_setting } from './setting';
export async function connectDB(){
const config = KnexConfig.config;
const env = get_setting().mode;
const init_need = !existsSync(config[env].connection.filename);
const knex = Knex(config[env]);
let tries = 0;
for(;;){
try{
console.log("try to connect db");
await knex.raw('select 1 + 1;');
console.log("connect success");
}
catch(err){
if(tries < 3){
tries++;
console.error(`connection fail ${err} retry...`);
continue;
}
else{
throw err;
}
}
break;
}
if(init_need){
console.log("first execute: initialize database...");
const migrate = await import("../migrations/initial");
await migrate.up(knex);
}
return knex;
}