55 lines
1.6 KiB
JavaScript
55 lines
1.6 KiB
JavaScript
import fs from 'fs';
|
|
import Database from 'better-sqlite3';
|
|
|
|
// 1. JSON lesen
|
|
const data = JSON.parse(fs.readFileSync('./data.json', 'utf-8'));
|
|
const db = new Database('recipes.db');
|
|
|
|
// 2. Tabellen erstellen
|
|
db.exec(`
|
|
CREATE TABLE users (
|
|
id INTEGER PRIMARY KEY,
|
|
username TEXT UNIQUE,
|
|
password TEXT,
|
|
is_admin INTEGER,
|
|
created_at TEXT
|
|
);
|
|
CREATE TABLE recipes (
|
|
id INTEGER PRIMARY KEY,
|
|
name TEXT,
|
|
description TEXT,
|
|
ingredients TEXT,
|
|
steps TEXT,
|
|
category TEXT,
|
|
source TEXT,
|
|
source_url TEXT,
|
|
source_author TEXT,
|
|
tiktok_url TEXT,
|
|
tiktok_author TEXT,
|
|
thumbnail_url TEXT,
|
|
user_id INTEGER,
|
|
created_at TEXT,
|
|
updated_at TEXT
|
|
);
|
|
CREATE TABLE invite_tokens (
|
|
id INTEGER PRIMARY KEY,
|
|
token TEXT UNIQUE,
|
|
created_by INTEGER,
|
|
used_by INTEGER,
|
|
created_at TEXT,
|
|
used_at TEXT
|
|
);
|
|
`);
|
|
|
|
// 3. Daten einfügen
|
|
const insertUser = db.prepare('INSERT INTO users VALUES (?, ?, ?, ?, ?)');
|
|
data.users.forEach(u => insertUser.run(u.id, u.username, u.password, u.is_admin, u.created_at));
|
|
|
|
const insertRecipe = db.prepare('INSERT INTO recipes VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)');
|
|
data.recipes.forEach(r => insertRecipe.run(r.id, r.name, r.description, r.ingredients, r.steps, r.category, r.source, r.source_url, r.source_author, r.tiktok_url, r.tiktok_author, r.thumbnail_url, r.user_id, r.created_at, r.updated_at));
|
|
|
|
const insertToken = db.prepare('INSERT INTO invite_tokens VALUES (?, ?, ?, ?, ?, ?)');
|
|
data.invite_tokens.forEach(t => insertToken.run(t.id, t.token, t.created_by, t.used_by, t.created_at, t.used_at));
|
|
|
|
console.log('Migration erfolgreich abgeschlossen!');
|