Pārlūkot izejas kodu

sql tag hinzufügen

hmt 4 gadi atpakaļ
vecāks
revīzija
069d162f3c

+ 3 - 2
src/components/Autocomplete.svelte

@@ -1,6 +1,7 @@
 <script>
   import { view, db } from "./../stores.js";
   import { get_kurs, get_schueler } from './../getter.js';
+  import { sql } from "./../helpers.js";
   import Schueler from "./Schueler.svelte";
   import Kurs from "./Kurs.svelte";
 
@@ -15,7 +16,7 @@
     selected = -1;
     const schueler = $db
       .prepare(
-        `SELECT *
+        sql`SELECT *
         FROM schueler
         WHERE vorname || ' ' || name LIKE $term
         OR name || ', ' || vorname LIKE $term`
@@ -23,7 +24,7 @@
       .all({term: "%"+ term + "%"});
     const kurse = $db
       .prepare(
-        `SELECT DISTINCT k.kurs, s.klasse, s.jahr
+        sql`SELECT DISTINCT k.kurs, s.klasse, s.jahr
         FROM kurszugehoerigkeit AS k
         JOIN schueler AS s ON (s.schild_id = k.schild_id)
         WHERE kurs LIKE $term OR klasse LIKE $term`

+ 9 - 8
src/components/Einstellungen.svelte

@@ -1,6 +1,7 @@
 <script>
   import { parse } from "papaparse";
   import { configData, db } from "./../stores.js";
+  import { sql } from "./../helpers.js";
   import * as notifier from "./../notifier.js";
 
   let datensatz_schueler = "",
@@ -14,7 +15,7 @@
       console.log(
         $db
           .prepare(
-            `
+            sql`
       INSERT INTO schueler (name, vorname, nichtschueler, memo) VALUES(:name, :vorname, :nichtschueler, :memo)
     `
           )
@@ -35,10 +36,10 @@
     });
     try {
       $db.prepare(
-        `DELETE FROM schueler WHERE nichtschueler=1 AND NOT EXISTS (SELECT * FROM ausleihe WHERE ausleihe.schueler_id = schueler.id)`
+        sql`DELETE FROM schueler WHERE nichtschueler=1 AND NOT EXISTS (SELECT * FROM ausleihe WHERE ausleihe.schueler_id = schueler.id)`
       ).run();
       const insert = $db.prepare(
-        `INSERT INTO schueler (schild_id, name, vorname, jahr, nichtschueler) VALUES(:id, :name, :vorname, :jahr, 1)
+        sql`INSERT INTO schueler (schild_id, name, vorname, jahr, nichtschueler) VALUES(:id, :name, :vorname, :jahr, 1)
         ON CONFLICT (schild_id) DO UPDATE SET jahr = :jahr`
       );
       const insertMany = $db.transaction((entries) => {
@@ -73,11 +74,11 @@
       .map((v) => `(${v.id}, '${v.kurs_lehrer || ""}', '${v.kurs || ""}')`)
       .join(",");
     const query = [
-      `DELETE FROM schueler WHERE NOT nichtschueler AND NOT EXISTS ( SELECT * FROM ausleihe WHERE ausleihe.schueler_id = schueler.id)`,
-      `INSERT INTO schueler (schild_id, jahr, klasse, name, vorname) VALUES ${schueler_values}
+      sql`DELETE FROM schueler WHERE NOT nichtschueler AND NOT EXISTS ( SELECT * FROM ausleihe WHERE ausleihe.schueler_id = schueler.id)`,
+      sql`INSERT INTO schueler (schild_id, jahr, klasse, name, vorname) VALUES ${schueler_values}
         ON CONFLICT (schild_id) DO UPDATE SET jahr = ${jahr}`,
-      `DELETE FROM kurszugehoerigkeit`,
-      `INSERT INTO kurszugehoerigkeit (schild_id, kurs_lehrer, kurs) VALUES ${kurszugehoerigkeit_values}`,
+      sql`DELETE FROM kurszugehoerigkeit`,
+      sql`INSERT INTO kurszugehoerigkeit (schild_id, kurs_lehrer, kurs) VALUES ${kurszugehoerigkeit_values}`,
     ];
     try {
       query.forEach((q) => $db.prepare(q).run());
@@ -97,7 +98,7 @@
   const update_medien = async () => {
     const medien = datensatz_medien.split("\n").filter((a) => a);
     const insert = $db.prepare(
-      "INSERT INTO medienbezeichnung (name) VALUES (?)"
+      sql`INSERT INTO medienbezeichnung (name) VALUES (?)`
     );
     const insertMany = $db.transaction((medien) => {
       for (const medium of medien) insert.run(medium.trim());

+ 4 - 3
src/components/Kurs.svelte

@@ -1,6 +1,7 @@
 <script>
   import Scanner from "./Scanner.svelte";
   import { schueler, view, db, medien, titel, print } from "./../stores.js";
+  import { sql } from "./../helpers.js";
   import * as notifier from "./../notifier.js";
   import { DontBubbleException } from "./../exceptions.js";
 
@@ -19,7 +20,7 @@
     if (!id) throw "Noch kein Titel festgelegt";
     const res = $db
       .prepare(
-        `
+        sql`
       INSERT INTO medienexemplar (barcode, medienbezeichnung_id) VALUES (?,?)
     `
       )
@@ -38,7 +39,7 @@
     }
     const res = $db
       .prepare(
-        `
+        sql`
       DELETE FROM ausleihe WHERE id = ?
     `
       )
@@ -61,7 +62,7 @@
     };
     const res = $db
       .prepare(
-        `
+        sql`
       INSERT INTO ausleihe
       (jahr, klasse, schueler_id, medienexemplar_id, kurs)
       VALUES (:jahr, :klasse, :schueler_id, :medienexemplar_id, :kurs)

+ 4 - 4
src/components/Medien.svelte

@@ -2,13 +2,13 @@
   import Scanner from "./Scanner.svelte";
   import Medium from "./Medium.svelte";
   import { db, print, medien } from "./../stores.js";
-  import { group_by } from "./../helpers.js";
+  import { group_by, sql } from "./../helpers.js";
   import * as notifier from "./../notifier.js";
 
   function update() {
     $medien = $db
       .prepare(
-        `
+        sql`
       SELECT m.id AS medien_id,
       m.name AS medien_name,
       x.id AS exemplar_id,
@@ -28,7 +28,7 @@
     console.log(exemplar);
     const res = $db
       .prepare(
-        `
+        sql`
       DELETE FROM ausleihe WHERE id = ?
     `
       )
@@ -41,7 +41,7 @@
     if (!modal) throw "Barcode unbekannt";
     const res = $db
       .prepare(
-        `
+        sql`
       INSERT INTO medienexemplar (barcode, medienbezeichnung_id) VALUES (?,?)
     `
       )

+ 4 - 3
src/components/Medium.svelte

@@ -1,6 +1,7 @@
 <script>
   import { db, view } from "./../stores.js";
   import Schueler from "./Schueler.svelte";
+  import { sql } from "./../helpers.js";
   import { get_schueler } from "./../getter.js";
   export let medium = [];
   export let modal;
@@ -14,7 +15,7 @@
     const m = medium[0];
     const res = $db
       .prepare(
-        `
+        sql`
       UPDATE medienbezeichnung SET name=? WHERE id = ?
     `
       )
@@ -25,7 +26,7 @@
   const remove_medium = (_) => {
     const res = $db
       .prepare(
-        `
+        sql`
       DELETE FROM medienbezeichnung WHERE id = ?
     `
       )
@@ -38,7 +39,7 @@
   const remove_exemplar = (e) => {
     const res = $db
       .prepare(
-        `
+        sql`
       DELETE FROM medienexemplar WHERE id = ?
     `
       )

+ 8 - 8
src/components/Nutzer.svelte

@@ -1,7 +1,7 @@
 <script>
   import Schueler from "./Schueler.svelte";
   import { view, db } from "./../stores.js";
-  import { group_by } from "./../helpers.js";
+  import { group_by, sql } from "./../helpers.js";
   import { get_schueler } from "./../getter.js";
 
   let active;
@@ -9,7 +9,7 @@
   function ausleiher() {
     const res = $db
       .prepare(
-        `
+        sql`
       SELECT s.name, s.vorname, s.klasse, s.id, m.name as titel
       FROM ausleihe AS a
       LEFT JOIN medienexemplar AS x ON (x.id = a.medienexemplar_id)
@@ -24,7 +24,7 @@
   function ausleiher_vorjahr() {
     const res = $db
       .prepare(
-        `
+        sql`
       SELECT s.name, s.vorname, s.klasse, s.id, m.name as titel
       FROM ausleihe AS a
       LEFT JOIN medienexemplar AS x ON (x.id = a.medienexemplar_id)
@@ -40,7 +40,7 @@
   function schueler() {
     const res = $db
       .prepare(
-        `
+        sql`
       SELECT s.name, s.vorname, s.id, s.klasse
       FROM schueler AS s
     `
@@ -52,7 +52,7 @@
   function nutzer_gesperrt() {
     const res = $db
       .prepare(
-        `
+        sql`
       SELECT s.name, s.vorname, s.id, s.klasse
       FROM schueler AS s
       WHERE s.gesperrt = 1;
@@ -65,7 +65,7 @@
   function sonstige_nutzer() {
     const res = $db
       .prepare(
-        `
+        sql`
       SELECT s.name, s.vorname, s.memo, s.id, s.klasse
       FROM schueler AS s
       WHERE s.nichtschueler = 1;
@@ -77,7 +77,7 @@
   }
   const zahlen_a = $db
     .prepare(
-      `
+      sql`
       SELECT
         sum(case when a.jahr != s.jahr then 1 else 0 end) as s,
         count(DISTINCT s.id) as a
@@ -88,7 +88,7 @@
     .get();
   const zahlen = $db
     .prepare(
-      `
+      sql`
     SELECT
       Count(*) as a,
       sum(case when nichtschueler = 1 then 0 else 1 end) as sch,

+ 5 - 5
src/components/Scanner.svelte

@@ -2,7 +2,7 @@
   import { configData, db, scan_status } from "./../stores.js";
   import { DontBubbleException } from './../exceptions.js'
   import { onDestroy } from 'svelte';
-  import { focus, sort_by_name } from './../helpers.js';
+  import { focus, sort_by_name, sql } from './../helpers.js';
 	onDestroy(() => $scan_status = {})
 
   export let scaninterface
@@ -52,7 +52,7 @@
   function scan() {
     const res = $db
       .prepare(
-        `
+        sql`
       SELECT x.barcode, x.id AS x_id, m.name, m.id AS m_id, x.medienbezeichnung_id, a.*, a.id AS ausleihe_id
       FROM medienexemplar x
       LEFT JOIN medienbezeichnung AS m ON (x.medienbezeichnung_id = m.id)
@@ -66,7 +66,7 @@
       try {
         zuordnung(barcode);
       } catch (e) {
-        medium = $db.prepare(`SELECT * FROM medienbezeichnung`).all();
+        medium = $db.prepare(sql`SELECT * FROM medienbezeichnung`).all();
         registrieren = true
         console.log(e, "Barcode unbekannt; Medium registrieren");
         return
@@ -96,7 +96,7 @@
     try {
     const res = $db
       .prepare(
-        `
+        sql`
       INSERT INTO medienbezeichnung (name) VALUES (?)
     `
       )
@@ -116,7 +116,7 @@
     if (!medien_id) return
     const res = $db
       .prepare(
-        `
+        sql`
       INSERT INTO medienexemplar (barcode, medienbezeichnung_id) VALUES (?,?)
     `
       )

+ 7 - 6
src/components/Schueler.svelte

@@ -2,9 +2,10 @@
   import Medien from "./Medien.svelte";
   import Scanner from "./Scanner.svelte";
   import * as notifier from './../notifier.js'
+  import { sql } from "./../helpers.js";
   import { view, schueler, db, medien, print } from './../stores.js';
   function update () {
-    $medien = $db.prepare(`
+    $medien = $db.prepare(sql`
       SELECT a.*, x.*, m.*, a.id AS ausleihe_id
       FROM ausleihe as a
       LEFT JOIN medienexemplar AS x ON (x.id = a.medienexemplar_id)
@@ -14,7 +15,7 @@
   }
 
   function rueckgabe (exemplar) {
-    const res = $db.prepare(`
+    const res = $db.prepare(sql`
       DELETE FROM ausleihe WHERE id = ?
     `).run(exemplar.ausleihe_id)
     if (res) {
@@ -33,7 +34,7 @@
       medienexemplar_id: exemplar.x_id,
       kurs: s.kurs
     }
-    const res = $db.prepare(`
+    const res = $db.prepare(sql`
       INSERT INTO ausleihe
       (jahr, klasse, schueler_id, medienexemplar_id, kurs)
       VALUES (:jahr, :klasse, :schueler_id, :medienexemplar_id, :kurs)
@@ -52,19 +53,19 @@
   let yes
 
   const remove_schueler = _ => {
-    const res = $db.prepare(`
+    const res = $db.prepare(sql`
       DELETE FROM schueler WHERE id = ?
     `).run(s.id)
     if (res) { $view = Medien }
   }
   const suspend_schueler = _ => {
-    const res = $db.prepare(`
+    const res = $db.prepare(sql`
       UPDATE schueler SET gesperrt=? WHERE id = ?
     `).run(s.gesperrt ? 0 : 1, s.id)
     if (res) s.gesperrt = s.gesperrt ? 0 : 1
   }
   const edit_memo = _ => {
-    const res = $db.prepare(`
+    const res = $db.prepare(sql`
       UPDATE schueler SET memo=? WHERE id = ?
     `).run(s.memo, s.id)
   }

+ 5 - 1
src/helpers.js

@@ -24,4 +24,8 @@ export const sort_by_name = (a, b) => {
       return 1;
     }
     return 0;
-}
+}
+export const sql = (strings, ...expr) =>
+  strings
+    .map((str, index) => str + (expr.length > index ? String(expr[index]) : ''))
+    .join('')