@storecraft/database-sql-base
Version:
Official SQL Database driver for storecraft
57 lines (49 loc) • 1.58 kB
JavaScript
import 'dotenv/config';
import { App } from '@storecraft/core';
import { SQL } from '@storecraft/database-sql-base';
import { migrateToLatest } from '@storecraft/database-sql-base/migrate.js';
import { NodePlatform } from '@storecraft/core/platform/node';
import { api } from '@storecraft/core/test-runner'
import { MysqlDialect } from 'kysely';
import { createPool } from 'mysql2'
export const dialect = new MysqlDialect({
pool: createPool({
database: process.env.MYSQL_DB_NAME,
host: process.env.MYSQL_HOST,
port: parseInt(process.env.MYSQL_PORT),
user: process.env.MYSQL_USER,
password: process.env.MYSQL_PASSWORD,
})
});
export const create_app = async () => {
const app = new App(
{
auth_admins_emails: ['admin@sc.com'],
auth_secret_access_token: 'auth_secret_access_token',
auth_secret_refresh_token: 'auth_secret_refresh_token',
auth_secret_confirm_email_token: 'auth_secret_confirm_email_token',
auth_secret_forgot_password_token: 'auth_secret_forgot_password_token',
}
)
.withPlatform(new NodePlatform())
.withDatabase(
new SQL({
dialect: dialect,
dialect_type: 'MYSQL'
})
).init();
await migrateToLatest(app._.db, false);
return app;
}
async function test() {
const app = await create_app();
Object.entries(api).slice(0, -1).forEach(
([name, runner]) => {
runner.create(app._.app).run();
}
);
const last_test = Object.values(api).at(-1).create(app._.app);
last_test.after(async () => { await app._.disconnect() });
last_test.run();
}
test();