mirror of
https://github.com/Hessenuk/DiscordTickets.git
synced 2025-02-23 18:51:29 +02:00
62 lines
1.6 KiB
JavaScript
62 lines
1.6 KiB
JavaScript
|
import { config } from 'dotenv';
|
||
|
import fse from 'fs-extra';
|
||
|
import { join } from 'path';
|
||
|
import ora from 'ora';
|
||
|
import { PrismaClient } from '@prisma/client';
|
||
|
import DTF from '@eartharoid/dtf';
|
||
|
|
||
|
config();
|
||
|
|
||
|
const dtf = new DTF('en-GB');
|
||
|
|
||
|
let spinner = ora('Connecting').start();
|
||
|
|
||
|
fse.ensureDirSync(join(process.cwd(), './user/dumps'));
|
||
|
const file_path = join(process.cwd(), './user/dumps', `${dtf.fill('YYYY-MM-DD-HH-mm-ss')}-db.json`);
|
||
|
|
||
|
const prisma_options = {};
|
||
|
|
||
|
if (process.env.DB_PROVIDER === 'sqlite' && !process.env.DB_CONNECTION_URL) {
|
||
|
prisma_options.datasources = { db: { url: 'file:' + join(process.cwd(), './user/database.db') } };
|
||
|
}
|
||
|
|
||
|
const prisma = new PrismaClient(prisma_options);
|
||
|
|
||
|
if (process.env.DB_PROVIDER === 'sqlite') {
|
||
|
const { default: sqliteMiddleware } = await import('../src/lib/middleware/prisma-sqlite.js');
|
||
|
prisma.$use(sqliteMiddleware);
|
||
|
await prisma.$queryRaw`PRAGMA journal_mode=WAL;`;
|
||
|
await prisma.$queryRaw`PRAGMA synchronous=normal;`;
|
||
|
}
|
||
|
|
||
|
spinner.succeed('Connected');
|
||
|
|
||
|
export const models = [
|
||
|
'user',
|
||
|
'guild',
|
||
|
'tag',
|
||
|
'category',
|
||
|
'question',
|
||
|
'ticket',
|
||
|
'feedback',
|
||
|
'questionAnswer',
|
||
|
'archivedChannel',
|
||
|
'archivedRole',
|
||
|
'archivedUser',
|
||
|
'archivedMessage',
|
||
|
];
|
||
|
|
||
|
const dump = await Promise.all(
|
||
|
models.map(async model => {
|
||
|
spinner = ora(`Exporting ${model}`).start();
|
||
|
const data = await prisma[model].findMany();
|
||
|
spinner.succeed(`Exported ${data.length} from ${model}`);
|
||
|
return [model, data];
|
||
|
}),
|
||
|
);
|
||
|
|
||
|
spinner = ora('Writing').start();
|
||
|
await fse.promises.writeFile(file_path, JSON.stringify(dump));
|
||
|
spinner.succeed(`Written to "${file_path}"`);
|
||
|
process.exit(0);
|