feat: sistema de series/autores/franquicias + sidebar navegacion
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
const Database = require("better-sqlite3");
|
||||
const db = new Database("./data/worst-scan.db");
|
||||
|
||||
// Crear tablas de autores/series (misma migracion que src/lib/db.ts)
|
||||
try {
|
||||
db.exec(`
|
||||
CREATE TABLE IF NOT EXISTS authors (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
name TEXT NOT NULL UNIQUE,
|
||||
slug TEXT UNIQUE NOT NULL,
|
||||
created_at TEXT DEFAULT (datetime('now'))
|
||||
);
|
||||
CREATE TABLE IF NOT EXISTS series (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
name TEXT NOT NULL UNIQUE,
|
||||
slug TEXT UNIQUE NOT NULL,
|
||||
description TEXT,
|
||||
cover_url TEXT,
|
||||
created_at TEXT DEFAULT (datetime('now')),
|
||||
updated_at TEXT DEFAULT (datetime('now'))
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_authors_slug ON authors(slug);
|
||||
CREATE INDEX IF NOT EXISTS idx_series_slug ON series(slug);
|
||||
ALTER TABLE posts ADD COLUMN series_id INTEGER REFERENCES series(id);
|
||||
`);
|
||||
try { db.exec("CREATE INDEX IF NOT EXISTS idx_posts_series ON posts(series_id)"); } catch {}
|
||||
} catch (e) { console.log("migracion:", e.message); }
|
||||
|
||||
// helper slugify (mismo que src/lib/slug.ts)
|
||||
function slugify(...parts) {
|
||||
return parts
|
||||
.join("-")
|
||||
.toLowerCase()
|
||||
.normalize("NFD")
|
||||
.replace(/[\u0300-\u036f]/g, "")
|
||||
.replace(/[^a-z0-9]+/g, "-")
|
||||
.replace(/^-+|-+$/g, "")
|
||||
.slice(0, 80) || "sin-titulo";
|
||||
}
|
||||
|
||||
// 1) Poblar autores desde los artist de posts publicados
|
||||
const artists = db.prepare("SELECT DISTINCT artist FROM posts WHERE published=1 AND artist IS NOT NULL AND artist != '' AND artist != 'sin artista' AND artist != 'dummy'").all();
|
||||
const upsertAuthor = db.prepare("INSERT OR IGNORE INTO authors(name, slug) VALUES (?, ?)");
|
||||
let n = 0;
|
||||
for (const { artist } of artists) {
|
||||
const r = upsertAuthor.run(artist, slugify(artist));
|
||||
if (r.changes > 0) n++;
|
||||
}
|
||||
console.log("Autores insertados:", n);
|
||||
|
||||
// 2) Verificar
|
||||
const total = db.prepare("SELECT COUNT(*) c FROM authors").get();
|
||||
console.log("Total autores en tabla:", total.c);
|
||||
|
||||
// 3) Verificar series (deberian ser 0 por ahora)
|
||||
const series = db.prepare("SELECT COUNT(*) c FROM series").get();
|
||||
console.log("Total series:", series.c);
|
||||
|
||||
db.close();
|
||||
Reference in New Issue
Block a user