29 lines
1.0 KiB
JavaScript
29 lines
1.0 KiB
JavaScript
import bcrypt from 'bcryptjs';
|
|
import { eq } from 'drizzle-orm';
|
|
import { getDb } from './db/index.js';
|
|
import { users } from './db/schema/index.js';
|
|
const [, , username, password, displayName] = process.argv;
|
|
if (!username || !password || !displayName) {
|
|
console.error('Usage: pnpm -F @localiztoi/api seed:admin <username> <password> "<displayName>"');
|
|
process.exit(1);
|
|
}
|
|
const run = async () => {
|
|
const db = getDb();
|
|
const [existing] = await db.select({ id: users.id }).from(users).where(eq(users.username, username));
|
|
if (existing) {
|
|
console.log(`L'utilisateur "${username}" existe déjà.`);
|
|
process.exit(0);
|
|
}
|
|
const passwordHash = await bcrypt.hash(password, 12);
|
|
const [created] = await db
|
|
.insert(users)
|
|
.values({ username, passwordHash, displayName })
|
|
.returning();
|
|
console.log(`Admin créé : ${created.username} (${created.displayName}) — id: ${created.id}`);
|
|
process.exit(0);
|
|
};
|
|
run().catch((err) => {
|
|
console.error('Erreur:', err);
|
|
process.exit(1);
|
|
});
|