2024-02-15 01:48:47 +00:00
|
|
|
import 'dotenv/config';
|
2024-03-15 19:05:47 +00:00
|
|
|
import { drizzle } from 'drizzle-orm/node-postgres';
|
2024-02-15 01:48:47 +00:00
|
|
|
import pg from 'pg';
|
|
|
|
|
import * as schema from './schema';
|
2024-04-04 22:08:18 +00:00
|
|
|
import {Argon2id} from "oslo/password";
|
2024-02-15 01:48:47 +00:00
|
|
|
|
|
|
|
|
// create the connection
|
|
|
|
|
const pool = new pg.Pool({
|
|
|
|
|
user: process.env.DATABASE_USER,
|
|
|
|
|
password: process.env.DATABASE_PASSWORD,
|
|
|
|
|
host: process.env.DATABASE_HOST,
|
2024-04-04 22:08:18 +00:00
|
|
|
port: Number(process.env.DATABASE_PORT).valueOf(),
|
2024-03-02 23:53:02 +00:00
|
|
|
database: process.env.DATABASE_DB,
|
2024-04-04 22:08:18 +00:00
|
|
|
ssl: process.env.DATABASE_HOST !== 'localhost'
|
2024-02-15 01:48:47 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const db = drizzle(pool, { schema: schema });
|
|
|
|
|
|
2024-03-15 19:05:47 +00:00
|
|
|
console.log('Creating roles ...');
|
2024-04-04 22:08:18 +00:00
|
|
|
const adminRole = await db
|
2024-03-15 19:05:47 +00:00
|
|
|
.insert(schema.roles)
|
|
|
|
|
.values([{ name: 'admin' }])
|
2024-04-04 22:08:18 +00:00
|
|
|
.onConflictDoNothing()
|
|
|
|
|
.returning();
|
|
|
|
|
const userRole = await db
|
2024-03-15 19:05:47 +00:00
|
|
|
.insert(schema.roles)
|
|
|
|
|
.values([{ name: 'user' }])
|
2024-04-04 22:08:18 +00:00
|
|
|
.onConflictDoNothing()
|
|
|
|
|
.returning();
|
2024-03-15 19:05:47 +00:00
|
|
|
await db
|
|
|
|
|
.insert(schema.roles)
|
|
|
|
|
.values([{ name: 'editor' }])
|
|
|
|
|
.onConflictDoNothing();
|
|
|
|
|
await db
|
|
|
|
|
.insert(schema.roles)
|
|
|
|
|
.values([{ name: 'moderator' }])
|
|
|
|
|
.onConflictDoNothing();
|
|
|
|
|
console.log('Roles created.');
|
2024-02-17 08:10:19 +00:00
|
|
|
|
2024-04-04 22:08:18 +00:00
|
|
|
console.log('Admin Role: ', adminRole);
|
|
|
|
|
|
|
|
|
|
const adminUser = await db
|
|
|
|
|
.insert(schema.users)
|
|
|
|
|
.values({
|
|
|
|
|
username: `${process.env.ADMIN_USERNAME}`,
|
|
|
|
|
email: '',
|
|
|
|
|
hashed_password: await new Argon2id().hash(`${process.env.ADMIN_PASSWORD}`),
|
|
|
|
|
first_name: 'Brad',
|
|
|
|
|
last_name: 'S',
|
|
|
|
|
verified: true
|
|
|
|
|
})
|
|
|
|
|
.returning()
|
|
|
|
|
.onConflictDoNothing();
|
|
|
|
|
|
|
|
|
|
console.log('Admin user created.', adminUser);
|
|
|
|
|
|
|
|
|
|
await db.insert(schema.user_roles).values({
|
|
|
|
|
user_id: adminUser[0].id,
|
|
|
|
|
role_id: adminRole[0].id
|
|
|
|
|
}).onConflictDoNothing();
|
|
|
|
|
|
|
|
|
|
console.log('Admin user given admin role.');
|
|
|
|
|
|
|
|
|
|
await db.insert(schema.user_roles).values({
|
|
|
|
|
user_id: adminUser[0].id,
|
|
|
|
|
role_id: userRole[0].id
|
|
|
|
|
}).onConflictDoNothing();
|
|
|
|
|
|
|
|
|
|
console.log('Admin user given user role.');
|
|
|
|
|
|
2024-02-17 08:10:19 +00:00
|
|
|
await pool.end();
|
|
|
|
|
process.exit();
|