117 lines
3.5 KiB
JavaScript
117 lines
3.5 KiB
JavaScript
|
|
const Database = require('better-sqlite3');
|
||
|
|
const path = require('path');
|
||
|
|
|
||
|
|
const oldDb = new Database(path.join(__dirname, '../../antragsideen.db'), { readonly: true });
|
||
|
|
const newDb = new Database(path.join(__dirname, 'antragsideen.db'));
|
||
|
|
|
||
|
|
// Ausschuss-Normalisierung
|
||
|
|
const ausschussMap = {
|
||
|
|
'Umweltausschuss': 1,
|
||
|
|
'Infrastrukturausschuss': 2, 'Infrastruktur': 2,
|
||
|
|
'HFA': 3, 'Hauptausschuss': 3, 'Haupt- und Finanzausschuss': 3,
|
||
|
|
'Stadtentwicklungsausschuss': 4, 'Stadtentwicklung': 4,
|
||
|
|
'Sozialausschuss': 5, 'Soziales': 5,
|
||
|
|
'Wirtschaftsausschuss': 6, 'Wirtschaft': 6,
|
||
|
|
'Sport- und Freizeitausschuss': 7, 'Sport': 7,
|
||
|
|
'Schulausschuss': 8,
|
||
|
|
'Ausschuss für Bürgerbeteiligung': 9, 'Bürgerbeteiligung': 9
|
||
|
|
};
|
||
|
|
|
||
|
|
// Personen-Map
|
||
|
|
const personenMap = {
|
||
|
|
'Rüdiger Ludwig': 1,
|
||
|
|
'Heike Heuer': 2,
|
||
|
|
'Jörg Fritzsche': 3,
|
||
|
|
'Karin Köppen': 4,
|
||
|
|
'Daniel Adam': 5,
|
||
|
|
'Nicole Pfefferer': 6
|
||
|
|
};
|
||
|
|
|
||
|
|
// Priorität-Map
|
||
|
|
const prioMap = { 'Hoch': 1, 'Mittel': 2, 'Niedrig': 3, 'Abgeschlossen': 4 };
|
||
|
|
|
||
|
|
// Status-Map
|
||
|
|
const statusMap = {
|
||
|
|
'Ideenspeicher': 1, 'Recherche': 2, 'Entwurf': 3,
|
||
|
|
'Eingereicht': 4, 'Beschlossen': 5, 'Abgelehnt': 6, 'Abgeschlossen': 7
|
||
|
|
};
|
||
|
|
|
||
|
|
// Bereich-Map
|
||
|
|
const bereichMap = { 'Umwelt': 1, 'Infra': 2, 'HFA': 3, 'Soziales': 4, 'Stadt': 5, 'Wirtschaft': 6 };
|
||
|
|
|
||
|
|
// Anträge migrieren
|
||
|
|
const antraege = oldDb.prepare('SELECT * FROM antraege').all();
|
||
|
|
|
||
|
|
const insertAntrag = newDb.prepare(`
|
||
|
|
INSERT INTO antraege (id, titel, kurzbeschreibung, prioritaet_id, status_id, bereich_id,
|
||
|
|
dossier, antragstext, notizen, allris_referenzen, erstellt_am, aktualisiert_am)
|
||
|
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||
|
|
`);
|
||
|
|
|
||
|
|
const insertAntragAusschuss = newDb.prepare(`
|
||
|
|
INSERT OR IGNORE INTO antrag_ausschuesse (antrag_id, ausschuss_id) VALUES (?, ?)
|
||
|
|
`);
|
||
|
|
|
||
|
|
const insertAntragPerson = newDb.prepare(`
|
||
|
|
INSERT OR IGNORE INTO antrag_personen (antrag_id, person_id) VALUES (?, ?)
|
||
|
|
`);
|
||
|
|
|
||
|
|
newDb.exec('BEGIN TRANSACTION');
|
||
|
|
|
||
|
|
for (const a of antraege) {
|
||
|
|
// Antrag einfügen
|
||
|
|
insertAntrag.run(
|
||
|
|
a.id,
|
||
|
|
a.titel,
|
||
|
|
a.kurzbeschreibung,
|
||
|
|
prioMap[a.prioritaet] || 2,
|
||
|
|
statusMap[a.status] || 1,
|
||
|
|
bereichMap[a.bereich] || 1,
|
||
|
|
a.dossier,
|
||
|
|
a.antragstext,
|
||
|
|
a.notizen,
|
||
|
|
a.allris_referenzen,
|
||
|
|
a.erstellt_am,
|
||
|
|
a.aktualisiert_am
|
||
|
|
);
|
||
|
|
|
||
|
|
// Ausschüsse verknüpfen
|
||
|
|
if (a.ausschuesse) {
|
||
|
|
try {
|
||
|
|
const ausschuesse = JSON.parse(a.ausschuesse);
|
||
|
|
for (const aus of ausschuesse) {
|
||
|
|
const ausId = ausschussMap[aus];
|
||
|
|
if (ausId) insertAntragAusschuss.run(a.id, ausId);
|
||
|
|
}
|
||
|
|
} catch (e) {}
|
||
|
|
}
|
||
|
|
|
||
|
|
// Personen verknüpfen
|
||
|
|
if (a.personen) {
|
||
|
|
try {
|
||
|
|
const personen = JSON.parse(a.personen);
|
||
|
|
for (const pers of personen) {
|
||
|
|
const persId = personenMap[pers];
|
||
|
|
if (persId) insertAntragPerson.run(a.id, persId);
|
||
|
|
}
|
||
|
|
} catch (e) {}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
newDb.exec('COMMIT');
|
||
|
|
|
||
|
|
console.log(`✓ ${antraege.length} Anträge migriert`);
|
||
|
|
|
||
|
|
// Statistik
|
||
|
|
const stats = newDb.prepare(`
|
||
|
|
SELECT
|
||
|
|
(SELECT COUNT(*) FROM antraege) as antraege,
|
||
|
|
(SELECT COUNT(*) FROM antrag_ausschuesse) as ausschuss_links,
|
||
|
|
(SELECT COUNT(*) FROM antrag_personen) as personen_links
|
||
|
|
`).get();
|
||
|
|
console.log(`✓ ${stats.ausschuss_links} Ausschuss-Verknüpfungen`);
|
||
|
|
console.log(`✓ ${stats.personen_links} Personen-Verknüpfungen`);
|
||
|
|
|
||
|
|
oldDb.close();
|
||
|
|
newDb.close();
|