47 lines
1.0 KiB
JavaScript
47 lines
1.0 KiB
JavaScript
const { Logger, DialectManager, Generator } = require('kysely-codegen');
|
|
const { join } = require('node:path');
|
|
|
|
require('dotenv').config();
|
|
|
|
async function generate() {
|
|
const { DATABASE_USERNAME, DATABASE_PASSWORD, DATABASE_HOST, DATABASE_NAME } =
|
|
process.env;
|
|
if (
|
|
!DATABASE_USERNAME ||
|
|
!DATABASE_PASSWORD ||
|
|
!DATABASE_HOST ||
|
|
!DATABASE_NAME
|
|
) {
|
|
console.warn(
|
|
'DATABASE_USERNAME, DATABASE_PASSWORD, DATABASE_HOST and DATABASE_NAME must be set'
|
|
);
|
|
return;
|
|
}
|
|
|
|
const logger = new Logger(2);
|
|
|
|
const databaseUrl = `mysql://${DATABASE_USERNAME}:${DATABASE_PASSWORD}@${DATABASE_HOST}/${DATABASE_NAME}?ssl={"rejectUnauthorized":true}`;
|
|
|
|
const dialectManager = new DialectManager();
|
|
const dialect = dialectManager.getDialect('mysql');
|
|
|
|
const db = await dialect.introspector.connect({
|
|
connectionString: databaseUrl,
|
|
dialect,
|
|
});
|
|
|
|
const generator = new Generator();
|
|
|
|
await generator.generate({
|
|
camelCase: true,
|
|
db,
|
|
dialect,
|
|
logger,
|
|
outFile: join(__dirname, '../src/lib/db/schema.d.ts'),
|
|
});
|
|
|
|
await db.destroy();
|
|
}
|
|
|
|
generate();
|