db.ts 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { DB } from "$sqlite/mod.ts";
  2. function prepareDB(tableName: string) {
  3. const db = new DB("postdown.db");
  4. switch (tableName) {
  5. case "User":
  6. db.execute(`
  7. CREATE TABLE IF NOT EXISTS user (
  8. id INTEGER PRIMARY KEY AUTOINCREMENT,
  9. name VARCHAR(128),
  10. email VARCHAR(128),
  11. password TEXT
  12. )
  13. `);
  14. break;
  15. case "Token":
  16. db.execute(`
  17. CREATE TABLE IF NOT EXISTS session (
  18. id INTEGER PRIMARY KEY AUTOINCREMENT,
  19. user_id INTEGER,
  20. token VARCHAR(128),
  21. )
  22. `);
  23. break;
  24. }
  25. return db;
  26. }
  27. export function find(
  28. tableName: string,
  29. queryObject: { [key: string]: string | number }
  30. ) {
  31. const db = prepareDB(tableName);
  32. const queryConditions = Object.keys(queryObject).map((queryKey) =>
  33. typeof queryObject[queryKey] === "number"
  34. ? `${queryKey}=${queryObject[queryKey]}`
  35. : `${queryKey}="${queryObject[queryKey]}"`
  36. );
  37. return db.query(
  38. `SELECT * FROM ${tableName.toLowerCase()} WHERE ${queryConditions.join(
  39. " AND "
  40. )}`
  41. );
  42. }