1
0

myanimebot-init-pgsql.sql 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. CREATE TABLE IF NOT EXISTS "t_animes" (
  2. "id" INT PRIMARY KEY NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 ),
  3. "guid" TEXT NOT NULL,
  4. "service" TEXT NOT NULL DEFAULT 'mal',
  5. "title" TEXT DEFAULT NULL,
  6. "thumbnail" TEXT DEFAULT NULL,
  7. "found" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  8. "discoverer" TEXT DEFAULT 'Anonymous',
  9. "media" TEXT DEFAULT 'unknown'
  10. );
  11. CREATE TABLE IF NOT EXISTS "t_feeds" (
  12. "id" INT PRIMARY KEY NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 ),
  13. "published" TIMESTAMP NOT NULL,
  14. "title" TEXT DEFAULT NULL,
  15. "service" TEXT NOT NULL DEFAULT 'mal',
  16. "url" TEXT NOT NULL,
  17. "user" TEXT DEFAULT NULL,
  18. "found" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  19. "type" TEXT DEFAULT 'N/A',
  20. "obsolete" INT NOT NULL DEFAULT 0
  21. );
  22. CREATE TABLE IF NOT EXISTS "t_users" (
  23. "id" INT PRIMARY KEY NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 ),
  24. "mal_user" TEXT NOT NULL,
  25. "service" TEXT NOT NULL DEFAULT 'mal',
  26. "servers" TEXT DEFAULT NULL,
  27. "added" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
  28. );
  29. CREATE TABLE IF NOT EXISTS "t_servers" (
  30. "id" INT PRIMARY KEY NOT NULL GENERATED ALWAYS AS IDENTITY ( INCREMENT 1 ),
  31. "server" BIGINT NOT NULL,
  32. "channel" BIGINT DEFAULT NULL,
  33. "admin_group" TEXT DEFAULT NULL
  34. );
  35. CREATE OR REPLACE VIEW v_top AS SELECT "user", COUNT("title") AS "total" FROM t_feeds GROUP BY "user" ORDER BY COUNT("title") DESC;
  36. CREATE OR REPLACE VIEW v_totalfeeds AS SELECT COUNT(0) AS "total" FROM "t_feeds";
  37. CREATE OR REPLACE VIEW v_totalanimes AS SELECT COUNT(0) AS "total" from "t_animes";
  38. CREATE OR REPLACE FUNCTION "sp_animecountperkeyword"(IN anime_var text, IN limit_var INT DEFAULT 100)
  39. RETURNS TABLE("title" TEXT, "total" INT)
  40. LANGUAGE 'sql'
  41. AS $BODY$
  42. SELECT "title", COUNT(0) AS "total"
  43. FROM "t_feeds"
  44. WHERE LOWER("title") LIKE '%' || LOWER(anime_var) || '%'
  45. GROUP BY "title"
  46. ORDER BY COUNT(id) DESC
  47. LIMIT limit_var;
  48. $BODY$;
  49. CREATE OR REPLACE FUNCTION "sp_usersperkeyword"(IN anime_var text, IN limit_var INT DEFAULT 100)
  50. RETURNS TABLE("user" TEXT, "total" INT)
  51. LANGUAGE 'sql'
  52. AS $BODY$
  53. SELECT "user", COUNT("title") AS "total"
  54. FROM "t_feeds"
  55. WHERE LOWER("title") LIKE '%' || LOWER(anime_var) || '%'
  56. GROUP BY "user"
  57. ORDER BY COUNT("title") DESC
  58. LIMIT limit_var;
  59. $BODY$;