Files
Tiktok-Rezepte/backend/migrate_to_sqlite.js
2026-11-01 20:14:25 +01:00

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!');