controller.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import Database from 'better-sqlite3'
  2. import { v4 } from 'uuid'
  3. const db = new Database('./cosette.db')
  4. function load () {
  5. db.pragma('journal_mode = WAL')
  6. db.exec('CREATE TABLE IF NOT EXISTS cosette (uuid TEXT PRIMARY KEY, name TEXT NOT NULL, description TEXT, tags TEXT, images TEXT, updatedAt DATETIME DEFAULT CURRENT_TIMESTAMP)')
  7. db.exec('CREATE TABLE IF NOT EXISTS chan (uuid TEXT PRIMARY KEY, cosetta_uuid REFERENCES cosette(uuid), message TEXT, updatedAt DATETIME DEFAULT CURRENT_TIMESTAMP)')
  8. }
  9. // load()
  10. export function add (cosetta) {
  11. const q = db.prepare('INSERT INTO cosette (uuid, name, description, tags, images) VALUES(:uuid, :name, :description, :tags, :imgs)')
  12. cosetta.uuid = v4()
  13. cosetta.tags = JSON.stringify(cosetta.tags.split(',').map(t => t.toLowerCase().trim()))
  14. cosetta.imgs = JSON.stringify(cosetta.imgs)
  15. q.run(cosetta)
  16. return cosetta
  17. }
  18. export function get (uuid) {
  19. let q = db.prepare('SELECT * from cosette WHERE uuid = ?')
  20. const cosetta = q.get(uuid)
  21. cosetta.tags = cosetta.tags ? JSON.parse(cosetta.tags) : []
  22. cosetta.images = cosetta.images ? JSON.parse(cosetta.images) : []
  23. q = db.prepare('SELECT message, updatedAt FROM chan WHERE cosetta_uuid = ? ORDER BY updatedAt desc')
  24. const comments = q.all(uuid)
  25. return { cosetta, comments }
  26. }
  27. export function getAll (limit=0, offset=0, tags=[], search='') {
  28. const q = db.prepare('SELECT * FROM cosette')
  29. const ret = q.all()
  30. return ret.map(r => {
  31. r.tags = r.tags ? JSON.parse(r.tags) : []
  32. r.images = r.images ? JSON.parse(r.images) : []
  33. return r
  34. })
  35. }
  36. export function addComment (comment) {
  37. console.error('sono dentro addComment', comment)
  38. const q = db.prepare('INSERT INTO chan (uuid, cosetta_uuid, message) VALUES(:uuid, :cosetta_uuid, :message)')
  39. comment.uuid = v4()
  40. console.error(comment)
  41. q.run(comment)
  42. return comment
  43. }
  44. export function getComments (cosetta_uuid) {
  45. const q = db.prepare('SELECT * from chan WHERE cosetta_uuid = ?')
  46. return q.all(cosetta_uuid)
  47. }