@aurora-interactive/sensei-productivity 1.0.0 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (293) hide show
  1. package/README.md +18 -3
  2. package/dist/commonjs/funcs/categories-create.d.ts +1 -1
  3. package/dist/commonjs/funcs/categories-create.d.ts.map +1 -1
  4. package/dist/commonjs/funcs/categories-create.js +14 -3
  5. package/dist/commonjs/funcs/categories-create.js.map +1 -1
  6. package/dist/commonjs/funcs/categories-delete.js +13 -3
  7. package/dist/commonjs/funcs/categories-delete.js.map +1 -1
  8. package/dist/commonjs/funcs/categories-get-all.d.ts +1 -1
  9. package/dist/commonjs/funcs/categories-get-all.d.ts.map +1 -1
  10. package/dist/commonjs/funcs/categories-get-all.js +14 -3
  11. package/dist/commonjs/funcs/categories-get-all.js.map +1 -1
  12. package/dist/commonjs/funcs/categories-update.d.ts +1 -1
  13. package/dist/commonjs/funcs/categories-update.d.ts.map +1 -1
  14. package/dist/commonjs/funcs/categories-update.js +14 -3
  15. package/dist/commonjs/funcs/categories-update.js.map +1 -1
  16. package/dist/commonjs/funcs/schools-get-all.js +13 -3
  17. package/dist/commonjs/funcs/schools-get-all.js.map +1 -1
  18. package/dist/commonjs/funcs/schools-get.d.ts +1 -1
  19. package/dist/commonjs/funcs/schools-get.d.ts.map +1 -1
  20. package/dist/commonjs/funcs/schools-get.js +14 -3
  21. package/dist/commonjs/funcs/schools-get.js.map +1 -1
  22. package/dist/commonjs/funcs/user-activities-create.d.ts +14 -0
  23. package/dist/commonjs/funcs/user-activities-create.d.ts.map +1 -0
  24. package/dist/commonjs/funcs/user-activities-create.js +123 -0
  25. package/dist/commonjs/funcs/user-activities-create.js.map +1 -0
  26. package/dist/commonjs/funcs/user-activities-delete.d.ts +14 -0
  27. package/dist/commonjs/funcs/user-activities-delete.d.ts.map +1 -0
  28. package/dist/commonjs/funcs/user-activities-delete.js +127 -0
  29. package/dist/commonjs/funcs/user-activities-delete.js.map +1 -0
  30. package/dist/commonjs/funcs/user-activities-get-all-of-user.d.ts +14 -0
  31. package/dist/commonjs/funcs/user-activities-get-all-of-user.d.ts.map +1 -0
  32. package/dist/commonjs/funcs/user-activities-get-all-of-user.js +132 -0
  33. package/dist/commonjs/funcs/user-activities-get-all-of-user.js.map +1 -0
  34. package/dist/commonjs/funcs/user-activities-get.d.ts +14 -0
  35. package/dist/commonjs/funcs/user-activities-get.d.ts.map +1 -0
  36. package/dist/commonjs/funcs/user-activities-get.js +128 -0
  37. package/dist/commonjs/funcs/user-activities-get.js.map +1 -0
  38. package/dist/commonjs/funcs/user-activities-me.d.ts +14 -0
  39. package/dist/commonjs/funcs/user-activities-me.d.ts.map +1 -0
  40. package/dist/commonjs/funcs/user-activities-me.js +126 -0
  41. package/dist/commonjs/funcs/user-activities-me.js.map +1 -0
  42. package/dist/commonjs/funcs/user-activities-update.d.ts +14 -0
  43. package/dist/commonjs/funcs/user-activities-update.d.ts.map +1 -0
  44. package/dist/commonjs/funcs/user-activities-update.js +129 -0
  45. package/dist/commonjs/funcs/user-activities-update.js.map +1 -0
  46. package/dist/commonjs/funcs/users-delete.js +13 -3
  47. package/dist/commonjs/funcs/users-delete.js.map +1 -1
  48. package/dist/commonjs/funcs/users-get.d.ts +1 -1
  49. package/dist/commonjs/funcs/users-get.d.ts.map +1 -1
  50. package/dist/commonjs/funcs/users-get.js +14 -3
  51. package/dist/commonjs/funcs/users-get.js.map +1 -1
  52. package/dist/commonjs/funcs/users-login.d.ts +1 -1
  53. package/dist/commonjs/funcs/users-login.d.ts.map +1 -1
  54. package/dist/commonjs/funcs/users-login.js +14 -3
  55. package/dist/commonjs/funcs/users-login.js.map +1 -1
  56. package/dist/commonjs/funcs/users-me.d.ts +1 -1
  57. package/dist/commonjs/funcs/users-me.d.ts.map +1 -1
  58. package/dist/commonjs/funcs/users-me.js +14 -3
  59. package/dist/commonjs/funcs/users-me.js.map +1 -1
  60. package/dist/commonjs/funcs/users-signup.d.ts +1 -1
  61. package/dist/commonjs/funcs/users-signup.d.ts.map +1 -1
  62. package/dist/commonjs/funcs/users-signup.js +14 -3
  63. package/dist/commonjs/funcs/users-signup.js.map +1 -1
  64. package/dist/commonjs/funcs/users-update.d.ts +1 -1
  65. package/dist/commonjs/funcs/users-update.d.ts.map +1 -1
  66. package/dist/commonjs/funcs/users-update.js +14 -3
  67. package/dist/commonjs/funcs/users-update.js.map +1 -1
  68. package/dist/commonjs/lib/config.d.ts +4 -4
  69. package/dist/commonjs/lib/config.js +4 -4
  70. package/dist/commonjs/lib/config.js.map +1 -1
  71. package/dist/commonjs/lib/security.js +1 -1
  72. package/dist/commonjs/lib/security.js.map +1 -1
  73. package/dist/commonjs/models/operations/create-activity.d.ts +47 -0
  74. package/dist/commonjs/models/operations/create-activity.d.ts.map +1 -0
  75. package/dist/commonjs/models/operations/create-activity.js +76 -0
  76. package/dist/commonjs/models/operations/create-activity.js.map +1 -0
  77. package/dist/commonjs/models/operations/delete-activity.d.ts +12 -0
  78. package/dist/commonjs/models/operations/delete-activity.d.ts.map +1 -0
  79. package/dist/commonjs/models/operations/delete-activity.js +49 -0
  80. package/dist/commonjs/models/operations/delete-activity.js.map +1 -0
  81. package/dist/commonjs/models/operations/get-activity-by-id.d.ts +38 -0
  82. package/dist/commonjs/models/operations/get-activity-by-id.d.ts.map +1 -0
  83. package/dist/commonjs/models/operations/get-activity-by-id.js +73 -0
  84. package/dist/commonjs/models/operations/get-activity-by-id.js.map +1 -0
  85. package/dist/commonjs/models/operations/get-user-activities.d.ts +44 -0
  86. package/dist/commonjs/models/operations/get-user-activities.d.ts.map +1 -0
  87. package/dist/commonjs/models/operations/get-user-activities.js +80 -0
  88. package/dist/commonjs/models/operations/get-user-activities.js.map +1 -0
  89. package/dist/commonjs/models/operations/index.d.ts +6 -0
  90. package/dist/commonjs/models/operations/index.d.ts.map +1 -1
  91. package/dist/commonjs/models/operations/index.js +6 -0
  92. package/dist/commonjs/models/operations/index.js.map +1 -1
  93. package/dist/commonjs/models/operations/list-activities.d.ts +42 -0
  94. package/dist/commonjs/models/operations/list-activities.d.ts.map +1 -0
  95. package/dist/commonjs/models/operations/list-activities.js +79 -0
  96. package/dist/commonjs/models/operations/list-activities.js.map +1 -0
  97. package/dist/commonjs/models/operations/update-activity.d.ts +75 -0
  98. package/dist/commonjs/models/operations/update-activity.d.ts.map +1 -0
  99. package/dist/commonjs/models/operations/update-activity.js +94 -0
  100. package/dist/commonjs/models/operations/update-activity.js.map +1 -0
  101. package/dist/commonjs/sdk/activities.d.ts +29 -0
  102. package/dist/commonjs/sdk/activities.d.ts.map +1 -0
  103. package/dist/commonjs/sdk/activities.js +54 -0
  104. package/dist/commonjs/sdk/activities.js.map +1 -0
  105. package/dist/commonjs/sdk/categories.d.ts +3 -3
  106. package/dist/commonjs/sdk/categories.d.ts.map +1 -1
  107. package/dist/commonjs/sdk/schools.d.ts +1 -1
  108. package/dist/commonjs/sdk/schools.d.ts.map +1 -1
  109. package/dist/commonjs/sdk/sdk.d.ts +3 -0
  110. package/dist/commonjs/sdk/sdk.d.ts.map +1 -1
  111. package/dist/commonjs/sdk/sdk.js +4 -0
  112. package/dist/commonjs/sdk/sdk.js.map +1 -1
  113. package/dist/commonjs/sdk/user.d.ts +7 -0
  114. package/dist/commonjs/sdk/user.d.ts.map +1 -0
  115. package/dist/commonjs/sdk/user.js +15 -0
  116. package/dist/commonjs/sdk/user.js.map +1 -0
  117. package/dist/commonjs/sdk/users.d.ts +5 -5
  118. package/dist/commonjs/sdk/users.d.ts.map +1 -1
  119. package/dist/esm/funcs/categories-create.d.ts +1 -1
  120. package/dist/esm/funcs/categories-create.d.ts.map +1 -1
  121. package/dist/esm/funcs/categories-create.js +14 -3
  122. package/dist/esm/funcs/categories-create.js.map +1 -1
  123. package/dist/esm/funcs/categories-delete.js +13 -3
  124. package/dist/esm/funcs/categories-delete.js.map +1 -1
  125. package/dist/esm/funcs/categories-get-all.d.ts +1 -1
  126. package/dist/esm/funcs/categories-get-all.d.ts.map +1 -1
  127. package/dist/esm/funcs/categories-get-all.js +14 -3
  128. package/dist/esm/funcs/categories-get-all.js.map +1 -1
  129. package/dist/esm/funcs/categories-update.d.ts +1 -1
  130. package/dist/esm/funcs/categories-update.d.ts.map +1 -1
  131. package/dist/esm/funcs/categories-update.js +14 -3
  132. package/dist/esm/funcs/categories-update.js.map +1 -1
  133. package/dist/esm/funcs/schools-get-all.js +13 -3
  134. package/dist/esm/funcs/schools-get-all.js.map +1 -1
  135. package/dist/esm/funcs/schools-get.d.ts +1 -1
  136. package/dist/esm/funcs/schools-get.d.ts.map +1 -1
  137. package/dist/esm/funcs/schools-get.js +14 -3
  138. package/dist/esm/funcs/schools-get.js.map +1 -1
  139. package/dist/esm/funcs/user-activities-create.d.ts +14 -0
  140. package/dist/esm/funcs/user-activities-create.d.ts.map +1 -0
  141. package/dist/esm/funcs/user-activities-create.js +87 -0
  142. package/dist/esm/funcs/user-activities-create.js.map +1 -0
  143. package/dist/esm/funcs/user-activities-delete.d.ts +14 -0
  144. package/dist/esm/funcs/user-activities-delete.d.ts.map +1 -0
  145. package/dist/esm/funcs/user-activities-delete.js +91 -0
  146. package/dist/esm/funcs/user-activities-delete.js.map +1 -0
  147. package/dist/esm/funcs/user-activities-get-all-of-user.d.ts +14 -0
  148. package/dist/esm/funcs/user-activities-get-all-of-user.d.ts.map +1 -0
  149. package/dist/esm/funcs/user-activities-get-all-of-user.js +96 -0
  150. package/dist/esm/funcs/user-activities-get-all-of-user.js.map +1 -0
  151. package/dist/esm/funcs/user-activities-get.d.ts +14 -0
  152. package/dist/esm/funcs/user-activities-get.d.ts.map +1 -0
  153. package/dist/esm/funcs/user-activities-get.js +92 -0
  154. package/dist/esm/funcs/user-activities-get.js.map +1 -0
  155. package/dist/esm/funcs/user-activities-me.d.ts +14 -0
  156. package/dist/esm/funcs/user-activities-me.d.ts.map +1 -0
  157. package/dist/esm/funcs/user-activities-me.js +90 -0
  158. package/dist/esm/funcs/user-activities-me.js.map +1 -0
  159. package/dist/esm/funcs/user-activities-update.d.ts +14 -0
  160. package/dist/esm/funcs/user-activities-update.d.ts.map +1 -0
  161. package/dist/esm/funcs/user-activities-update.js +93 -0
  162. package/dist/esm/funcs/user-activities-update.js.map +1 -0
  163. package/dist/esm/funcs/users-delete.js +13 -3
  164. package/dist/esm/funcs/users-delete.js.map +1 -1
  165. package/dist/esm/funcs/users-get.d.ts +1 -1
  166. package/dist/esm/funcs/users-get.d.ts.map +1 -1
  167. package/dist/esm/funcs/users-get.js +14 -3
  168. package/dist/esm/funcs/users-get.js.map +1 -1
  169. package/dist/esm/funcs/users-login.d.ts +1 -1
  170. package/dist/esm/funcs/users-login.d.ts.map +1 -1
  171. package/dist/esm/funcs/users-login.js +14 -3
  172. package/dist/esm/funcs/users-login.js.map +1 -1
  173. package/dist/esm/funcs/users-me.d.ts +1 -1
  174. package/dist/esm/funcs/users-me.d.ts.map +1 -1
  175. package/dist/esm/funcs/users-me.js +14 -3
  176. package/dist/esm/funcs/users-me.js.map +1 -1
  177. package/dist/esm/funcs/users-signup.d.ts +1 -1
  178. package/dist/esm/funcs/users-signup.d.ts.map +1 -1
  179. package/dist/esm/funcs/users-signup.js +14 -3
  180. package/dist/esm/funcs/users-signup.js.map +1 -1
  181. package/dist/esm/funcs/users-update.d.ts +1 -1
  182. package/dist/esm/funcs/users-update.d.ts.map +1 -1
  183. package/dist/esm/funcs/users-update.js +14 -3
  184. package/dist/esm/funcs/users-update.js.map +1 -1
  185. package/dist/esm/lib/config.d.ts +4 -4
  186. package/dist/esm/lib/config.js +4 -4
  187. package/dist/esm/lib/config.js.map +1 -1
  188. package/dist/esm/lib/security.js +1 -1
  189. package/dist/esm/lib/security.js.map +1 -1
  190. package/dist/esm/models/operations/create-activity.d.ts +47 -0
  191. package/dist/esm/models/operations/create-activity.d.ts.map +1 -0
  192. package/dist/esm/models/operations/create-activity.js +38 -0
  193. package/dist/esm/models/operations/create-activity.js.map +1 -0
  194. package/dist/esm/models/operations/delete-activity.d.ts +12 -0
  195. package/dist/esm/models/operations/delete-activity.d.ts.map +1 -0
  196. package/dist/esm/models/operations/delete-activity.js +12 -0
  197. package/dist/esm/models/operations/delete-activity.js.map +1 -0
  198. package/dist/esm/models/operations/get-activity-by-id.d.ts +38 -0
  199. package/dist/esm/models/operations/get-activity-by-id.d.ts.map +1 -0
  200. package/dist/esm/models/operations/get-activity-by-id.js +35 -0
  201. package/dist/esm/models/operations/get-activity-by-id.js.map +1 -0
  202. package/dist/esm/models/operations/get-user-activities.d.ts +44 -0
  203. package/dist/esm/models/operations/get-user-activities.d.ts.map +1 -0
  204. package/dist/esm/models/operations/get-user-activities.js +42 -0
  205. package/dist/esm/models/operations/get-user-activities.js.map +1 -0
  206. package/dist/esm/models/operations/index.d.ts +6 -0
  207. package/dist/esm/models/operations/index.d.ts.map +1 -1
  208. package/dist/esm/models/operations/index.js +6 -0
  209. package/dist/esm/models/operations/index.js.map +1 -1
  210. package/dist/esm/models/operations/list-activities.d.ts +42 -0
  211. package/dist/esm/models/operations/list-activities.d.ts.map +1 -0
  212. package/dist/esm/models/operations/list-activities.js +41 -0
  213. package/dist/esm/models/operations/list-activities.js.map +1 -0
  214. package/dist/esm/models/operations/update-activity.d.ts +75 -0
  215. package/dist/esm/models/operations/update-activity.d.ts.map +1 -0
  216. package/dist/esm/models/operations/update-activity.js +55 -0
  217. package/dist/esm/models/operations/update-activity.js.map +1 -0
  218. package/dist/esm/sdk/activities.d.ts +29 -0
  219. package/dist/esm/sdk/activities.d.ts.map +1 -0
  220. package/dist/esm/sdk/activities.js +50 -0
  221. package/dist/esm/sdk/activities.js.map +1 -0
  222. package/dist/esm/sdk/categories.d.ts +3 -3
  223. package/dist/esm/sdk/categories.d.ts.map +1 -1
  224. package/dist/esm/sdk/schools.d.ts +1 -1
  225. package/dist/esm/sdk/schools.d.ts.map +1 -1
  226. package/dist/esm/sdk/sdk.d.ts +3 -0
  227. package/dist/esm/sdk/sdk.d.ts.map +1 -1
  228. package/dist/esm/sdk/sdk.js +4 -0
  229. package/dist/esm/sdk/sdk.js.map +1 -1
  230. package/dist/esm/sdk/user.d.ts +7 -0
  231. package/dist/esm/sdk/user.d.ts.map +1 -0
  232. package/dist/esm/sdk/user.js +11 -0
  233. package/dist/esm/sdk/user.js.map +1 -0
  234. package/dist/esm/sdk/users.d.ts +5 -5
  235. package/dist/esm/sdk/users.d.ts.map +1 -1
  236. package/jsr.json +1 -1
  237. package/package.json +1 -1
  238. package/rest-api/cypress/e2e/user-activity-endpoints.cy.ts +274 -0
  239. package/rest-api/cypress/e2e/user-endpoints.cy.ts +12 -5
  240. package/rest-api/cypress.config.ts +22 -1
  241. package/rest-api/index.js +9 -2
  242. package/rest-api/routes/UserActivityFunctions.js +304 -0
  243. package/src/funcs/categories-create.ts +25 -7
  244. package/src/funcs/categories-delete.ts +14 -3
  245. package/src/funcs/categories-get-all.ts +25 -7
  246. package/src/funcs/categories-update.ts +25 -7
  247. package/src/funcs/schools-get-all.ts +13 -3
  248. package/src/funcs/schools-get.ts +22 -7
  249. package/src/funcs/user-activities-create.ts +176 -0
  250. package/src/funcs/user-activities-delete.ts +175 -0
  251. package/src/funcs/user-activities-get-all-of-user.ts +192 -0
  252. package/src/funcs/user-activities-get.ts +182 -0
  253. package/src/funcs/user-activities-me.ts +184 -0
  254. package/src/funcs/user-activities-update.ts +183 -0
  255. package/src/funcs/users-delete.ts +14 -3
  256. package/src/funcs/users-get.ts +22 -7
  257. package/src/funcs/users-login.ts +22 -7
  258. package/src/funcs/users-me.ts +25 -7
  259. package/src/funcs/users-signup.ts +19 -7
  260. package/src/funcs/users-update.ts +22 -7
  261. package/src/lib/config.ts +4 -4
  262. package/src/lib/security.ts +1 -1
  263. package/src/models/operations/create-activity.ts +101 -0
  264. package/src/models/operations/delete-activity.ts +30 -0
  265. package/src/models/operations/get-activity-by-id.ts +89 -0
  266. package/src/models/operations/get-user-activities.ts +102 -0
  267. package/src/models/operations/index.ts +6 -0
  268. package/src/models/operations/list-activities.ts +97 -0
  269. package/src/models/operations/update-activity.ts +151 -0
  270. package/src/sdk/activities.ts +99 -0
  271. package/src/sdk/categories.ts +3 -3
  272. package/src/sdk/schools.ts +1 -1
  273. package/src/sdk/sdk.ts +6 -0
  274. package/src/sdk/user.ts +13 -0
  275. package/src/sdk/users.ts +5 -5
  276. package/.devcontainer/devcontainer.json +0 -45
  277. package/examples/node_modules/.package-lock.json +0 -174
  278. package/examples/node_modules/@esbuild/darwin-arm64/package.json +0 -20
  279. package/examples/node_modules/@types/node/package.json +0 -140
  280. package/examples/node_modules/dotenv/package.json +0 -62
  281. package/examples/node_modules/esbuild/package.json +0 -49
  282. package/examples/node_modules/fsevents/package.json +0 -62
  283. package/examples/node_modules/get-tsconfig/package.json +0 -46
  284. package/examples/node_modules/resolve-pkg-maps/package.json +0 -42
  285. package/examples/node_modules/tsx/package.json +0 -68
  286. package/examples/node_modules/undici-types/package.json +0 -55
  287. package/examples/package-lock.json +0 -611
  288. package/examples/package.json +0 -18
  289. package/rest-api/cypress/fixtures/example.json +0 -5
  290. package/rest-api/package-lock.json +0 -4748
  291. package/rest-api/package.json +0 -37
  292. package/rest-api/tsconfig.json +0 -34
  293. package/tsconfig.json +0 -40
@@ -14,11 +14,32 @@ export default defineConfig({
14
14
  },
15
15
 
16
16
  async reseedCategoriesTable() {
17
- await prisma.$executeRaw`DELETE FROM Category WHERE category_id NOT IN (1, 2, 3, 4);`;
17
+ await prisma.category.deleteMany({
18
+ where: {
19
+ category_id: {
20
+ notIn: [1, 2, 3, 4]
21
+ }
22
+ }
23
+ });
24
+
18
25
  await prisma.$executeRaw`REPLACE INTO Category (category_id, category_name, category_weight, category_description) VALUES (1, 'Academic', 3, 'Studying for an exam, completing coursework, etc.')`;
19
26
 
20
27
  return true;
21
28
  },
29
+
30
+ async reseedUserActivityTable() {
31
+ await prisma.user_Activity.deleteMany({
32
+ where: {
33
+ activity_id: {
34
+ not: 1
35
+ }
36
+ }
37
+ });
38
+
39
+ await prisma.$executeRaw`REPLACE INTO User_Activity (activity_id, user_id, category_name, activity_deadline, details) VALUES (1, 2, 'Professional', '2026-03-01 23:59:00', '')`;
40
+
41
+ return true;
42
+ }
22
43
  })
23
44
  },
24
45
  baseUrl: "http://localhost:3000/api/v1/"
package/rest-api/index.js CHANGED
@@ -7,6 +7,7 @@ import { readFileSync } from 'node:fs';
7
7
  import * as UserFuctions from "./routes/UserFunctions.js";
8
8
  import * as SchoolFunctions from "./routes/SchoolFunctions.js";
9
9
  import * as CategoryFunctions from "./routes/CategoryFunctions.js";
10
+ import * as UserActivityFunction from "./routes/UserActivityFunctions.js";
10
11
 
11
12
  const spec = yamlLoad(readFileSync("./api-spec.yaml"));
12
13
 
@@ -29,7 +30,13 @@ const handler = {
29
30
  listCategories: CategoryFunctions.listCategoriesHandler,
30
31
  createCategory: CategoryFunctions.createCategoryHandler,
31
32
  updateCategory: CategoryFunctions.updateCategoryHandler,
32
- deleteCategory: CategoryFunctions.deleteCategoryHandler
33
+ deleteCategory: CategoryFunctions.deleteCategoryHandler,
34
+ getUserActivities: UserActivityFunction.getUserActivitiesHandler,
35
+ listActivities: UserActivityFunction.listActivitiesHandler,
36
+ createActivity: UserActivityFunction.createActivityHandler,
37
+ getActivityById: UserActivityFunction.getActivityByIdHandler,
38
+ updateActivity: UserActivityFunction.updateActivityHandler,
39
+ deleteActivity: UserActivityFunction.deleteActivityHandler
33
40
  };
34
41
 
35
42
  fastify.register(oasFastify, { spec, handler });
@@ -37,7 +44,7 @@ fastify.register(oasFastify, { spec, handler });
37
44
  fastify.prisma = prisma;
38
45
 
39
46
  try {
40
- await fastify.listen({ port: 3000 })
47
+ await fastify.listen({ host: "0.0.0.0", port: 3000 })
41
48
  } catch (err) {
42
49
  console.log(err);
43
50
  process.exit(1)
@@ -0,0 +1,304 @@
1
+ async function getUserAuthInfo(prisma, accessToken) {
2
+ return await prisma.users.findFirst({
3
+ where: {
4
+ access_token: accessToken
5
+ },
6
+ select: {
7
+ user_id: true
8
+ }
9
+ });
10
+ }
11
+
12
+ async function areUsersFriends(prisma, userId, targetPotentialFriendId) {
13
+ const friendInfo = await prisma.User_Friends.findFirst({
14
+ where: {
15
+ OR: [
16
+ {
17
+ user_id: userId,
18
+ friend_id: targetPotentialFriendId,
19
+ },
20
+ {
21
+ user_id: targetPotentialFriendId,
22
+ friend_id: userId,
23
+ },
24
+ ],
25
+ },
26
+ });
27
+
28
+ if (friendInfo === null) {
29
+ return false;
30
+ }
31
+
32
+ return true;
33
+ }
34
+
35
+ export async function getUserActivitiesHandler(request, reply, fastify) {
36
+ const accessToken = (request.headers.authorization ?? "").substring(7)
37
+ const targetUserId = request.params.id;
38
+ const userInfo = await getUserAuthInfo(fastify.prisma, accessToken);
39
+
40
+ if (userInfo === null) {
41
+ reply.status(401);
42
+ return;
43
+ }
44
+
45
+ const targetUserInfo = await fastify.prisma.users.count({
46
+ where: {
47
+ user_id: targetUserId
48
+ }
49
+ });
50
+
51
+ // check for user existence
52
+ if (targetUserInfo < 1) {
53
+ reply.status(404);
54
+ return;
55
+ }
56
+
57
+ const areFriends = await areUsersFriends(fastify.prisma, userInfo.user_id, targetUserId);
58
+
59
+ const targetUserActivities = await fastify.prisma.User_Activity.findMany({
60
+ where: {
61
+ user_id: targetUserId,
62
+ is_private: areFriends ? undefined : false
63
+ },
64
+ select: {
65
+ activity_id: true,
66
+ category_name: true,
67
+ activity_status: true,
68
+ activity_deadline: true,
69
+ }
70
+ });
71
+
72
+ return targetUserActivities.map(activity => ({
73
+ activityId: activity.activity_id,
74
+ userId: targetUserId,
75
+ categoryName: activity.category_name,
76
+ activityStatus: activity.activity_status,
77
+ activityDeadline: activity.activity_deadline
78
+ }));
79
+ }
80
+
81
+ export async function listActivitiesHandler(request, reply, fastify) {
82
+ const accessToken = (request.headers.authorization ?? "").substring(7)
83
+ const userInfo = await getUserAuthInfo(fastify.prisma, accessToken);
84
+
85
+ if (userInfo === null) {
86
+ reply.status(401);
87
+ return;
88
+ }
89
+
90
+ const userActivities = await fastify.prisma.User_Activity.findMany({
91
+ where: {
92
+ user_id: userInfo.user_id,
93
+ },
94
+ select: {
95
+ activity_id: true,
96
+ category_name: true,
97
+ activity_status: true,
98
+ activity_deadline: true,
99
+ }
100
+ });
101
+
102
+ return userActivities.map(activity => ({
103
+ activityId: activity.activity_id,
104
+ userId: userInfo.user_id,
105
+ categoryName: activity.category_name,
106
+ activityStatus: activity.activity_status,
107
+ activityDeadline: activity.activity_deadline
108
+ }));
109
+ }
110
+
111
+ export async function createActivityHandler(request, reply, fastify) {
112
+ const accessToken = (request.headers.authorization ?? "").substring(7)
113
+ const userInfo = await getUserAuthInfo(fastify.prisma, accessToken);
114
+
115
+ if (userInfo === null) {
116
+ reply.status(401);
117
+ return;
118
+ }
119
+
120
+ const categoryInfo = await fastify.prisma.Category.findFirst({
121
+ where: {
122
+ category_name: request.body.categoryName
123
+ },
124
+ select: {
125
+ category_id: true
126
+ }
127
+ });
128
+
129
+ if (categoryInfo === null) {
130
+ reply.status(400);
131
+ return;
132
+ }
133
+
134
+ const activity = await fastify.prisma.User_Activity.create({
135
+ data: {
136
+ user_id: userInfo.user_id,
137
+ category_name: request.body.categoryName,
138
+ activity_deadline: request.body.activityDeadline,
139
+ details: request.body.details ?? null,
140
+ is_private: request.body.isPrivate ?? false
141
+ }
142
+ });
143
+
144
+ return {
145
+ activityId: activity.activity_id,
146
+ userId: Number(userInfo.user_id),
147
+ categoryName: request.body.categoryName,
148
+ activityStatus: activity.activity_status,
149
+ activityDeadline: request.body.activityDeadline,
150
+ details: request.body.details ?? null,
151
+ isPrivate: request.body.isPrivate ?? false
152
+ };
153
+ }
154
+
155
+ export async function getActivityByIdHandler(request, reply, fastify) {
156
+ const accessToken = (request.headers.authorization ?? "").substring(7);
157
+ const userInfo = await getUserAuthInfo(fastify.prisma, accessToken);
158
+
159
+ if (userInfo === null) {
160
+ reply.status(401);
161
+ return;
162
+ }
163
+
164
+ const activity = await fastify.prisma.User_Activity.findFirst({
165
+ where: {
166
+ activity_id: request.params.id
167
+ },
168
+ select: {
169
+ user_id: true,
170
+ category_name: true,
171
+ activity_status: true,
172
+ activity_deadline: true,
173
+ activity_start_timestamp: true,
174
+ details: true,
175
+ is_private: true
176
+ }
177
+ });
178
+
179
+ if (activity === null) {
180
+ reply.status(404);
181
+ return;
182
+ }
183
+
184
+ if (activity.user_id !== userInfo.user_id) {
185
+ reply.status(403);
186
+ return;
187
+ }
188
+
189
+ return {
190
+ activityId: request.params.id,
191
+ userId: userInfo.user_id,
192
+ categoryName: activity.category_name,
193
+ activityStatus: activity.activity_status,
194
+ activityDeadline: activity.activity_deadline,
195
+ activityStartTimestamp: activity.activity_start_timestamp,
196
+ details: activity.details,
197
+ isPrivate: activity.is_private
198
+ };
199
+ }
200
+
201
+ export async function updateActivityHandler(request, reply, fastify) {
202
+ if (Object.keys(request.body).length === 0) {
203
+ reply.status(400);
204
+ return;
205
+ }
206
+
207
+ const accessToken = (request.headers.authorization ?? "").substring(7);
208
+ const userInfo = await getUserAuthInfo(fastify.prisma, accessToken);
209
+
210
+ if (userInfo === null) {
211
+ reply.status(401);
212
+ return;
213
+ }
214
+
215
+ const currentActivity = await fastify.prisma.User_Activity.findFirst({
216
+ where: {
217
+ activity_id: request.params.id
218
+ },
219
+ select: {
220
+ user_id: true,
221
+ category_name: true,
222
+ activity_status: true,
223
+ activity_deadline: true,
224
+ activity_start_timestamp: true,
225
+ details: true,
226
+ is_private: true
227
+ }
228
+ });
229
+
230
+ if (currentActivity === null) {
231
+ reply.status(404);
232
+ return;
233
+ }
234
+
235
+ if (currentActivity.user_id !== userInfo.user_id) {
236
+ reply.status(403);
237
+ return;
238
+ }
239
+
240
+ const targetActivityStatus = request.body.activityStatus ?? currentActivity.activity_status;
241
+ const targetActivityDeadline = request.body.activityDeadline ?? currentActivity.activity_deadline;
242
+ const targetDetails = request.body.details ?? currentActivity.details;
243
+ const targetIsPrivate = request.body.isPrivate ?? currentActivity.is_private;
244
+
245
+ const updatedActivity = await fastify.prisma.User_Activity.update({
246
+ where: {
247
+ activity_id: request.params.id
248
+ },
249
+ data: {
250
+ activity_status: targetActivityStatus,
251
+ activity_deadline: targetActivityDeadline,
252
+ details: targetDetails,
253
+ is_private: targetIsPrivate
254
+ }
255
+ });
256
+
257
+ return {
258
+ activityId: request.params.id,
259
+ userId: userInfo.user_id,
260
+ categoryName: updatedActivity.category_name,
261
+ activityStartTimestamp: updatedActivity.activity_start_timestamp,
262
+ activityStatus: targetActivityStatus,
263
+ activityDeadline: targetActivityDeadline,
264
+ details: targetDetails,
265
+ isPrivate: targetIsPrivate
266
+ };
267
+ }
268
+
269
+ export async function deleteActivityHandler(request, reply, fastify) {
270
+ const accessToken = (request.headers.authorization ?? "").substring(7);
271
+ const userInfo = await getUserAuthInfo(fastify.prisma, accessToken);
272
+
273
+ if (userInfo === null) {
274
+ reply.status(401);
275
+ return;
276
+ }
277
+
278
+ const currentActivity = await fastify.prisma.User_Activity.findFirst({
279
+ where: {
280
+ activity_id: request.params.id
281
+ },
282
+ select: {
283
+ user_id: true,
284
+ }
285
+ });
286
+
287
+ if (currentActivity === null) {
288
+ reply.status(404);
289
+ return;
290
+ }
291
+
292
+ if (currentActivity.user_id !== userInfo.user_id) {
293
+ reply.status(403);
294
+ return;
295
+ }
296
+
297
+ await fastify.prisma.User_Activity.delete({
298
+ where: {
299
+ activity_id: request.params.id
300
+ }
301
+ });
302
+
303
+ return;
304
+ }
@@ -24,6 +24,7 @@ import { SenseiProductivityError } from "../models/errors/sensei-productivity-er
24
24
  import * as operations from "../models/operations/index.js";
25
25
  import { APICall, APIPromise } from "../types/async.js";
26
26
  import { Result } from "../types/fp.js";
27
+ import * as types$ from "../types/primitives.js";
27
28
 
28
29
  /**
29
30
  * Create a new category (school admins only)
@@ -34,7 +35,7 @@ export function categoriesCreate(
34
35
  options?: RequestOptions,
35
36
  ): APIPromise<
36
37
  Result<
37
- operations.CreateCategoryResponse,
38
+ operations.CreateCategoryResponse | undefined,
38
39
  | SenseiProductivityError
39
40
  | ResponseValidationError
40
41
  | ConnectionError
@@ -59,7 +60,7 @@ async function $do(
59
60
  ): Promise<
60
61
  [
61
62
  Result<
62
- operations.CreateCategoryResponse,
63
+ operations.CreateCategoryResponse | undefined,
63
64
  | SenseiProductivityError
64
65
  | ResponseValidationError
65
66
  | ConnectionError
@@ -105,8 +106,18 @@ async function $do(
105
106
  securitySource: client._options.bearerAuth,
106
107
  retryConfig: options?.retries
107
108
  || client._options.retryConfig
109
+ || {
110
+ strategy: "backoff",
111
+ backoff: {
112
+ initialInterval: 1000,
113
+ maxInterval: 60000,
114
+ exponent: 1.3,
115
+ maxElapsedTime: 3600000,
116
+ },
117
+ retryConnectionErrors: true,
118
+ }
108
119
  || { strategy: "none" },
109
- retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"],
120
+ retryCodes: options?.retryCodes || ["429", "5XX"],
110
121
  };
111
122
 
112
123
  const requestRes = client._createRequest(context, {
@@ -126,7 +137,7 @@ async function $do(
126
137
 
127
138
  const doResult = await client._do(req, {
128
139
  context,
129
- errorCodes: ["400", "401", "403", "4XX", "5XX"],
140
+ errorCodes: ["429", "5XX"],
130
141
  retryConfig: context.retryConfig,
131
142
  retryCodes: context.retryCodes,
132
143
  });
@@ -136,7 +147,7 @@ async function $do(
136
147
  const response = doResult.value;
137
148
 
138
149
  const [result] = await M.match<
139
- operations.CreateCategoryResponse,
150
+ operations.CreateCategoryResponse | undefined,
140
151
  | SenseiProductivityError
141
152
  | ResponseValidationError
142
153
  | ConnectionError
@@ -146,8 +157,15 @@ async function $do(
146
157
  | UnexpectedClientError
147
158
  | SDKValidationError
148
159
  >(
149
- M.json(201, operations.CreateCategoryResponse$inboundSchema),
150
- M.fail([400, 401, 403, "4XX"]),
160
+ M.json(
161
+ 201,
162
+ types$.optional(operations.CreateCategoryResponse$inboundSchema),
163
+ ),
164
+ M.nil(
165
+ [400, 401, 403],
166
+ types$.optional(operations.CreateCategoryResponse$inboundSchema),
167
+ ),
168
+ M.fail(429),
151
169
  M.fail("5XX"),
152
170
  )(response, req);
153
171
  if (!result.ok) {
@@ -111,8 +111,18 @@ async function $do(
111
111
  securitySource: client._options.bearerAuth,
112
112
  retryConfig: options?.retries
113
113
  || client._options.retryConfig
114
+ || {
115
+ strategy: "backoff",
116
+ backoff: {
117
+ initialInterval: 1000,
118
+ maxInterval: 60000,
119
+ exponent: 1.3,
120
+ maxElapsedTime: 3600000,
121
+ },
122
+ retryConnectionErrors: true,
123
+ }
114
124
  || { strategy: "none" },
115
- retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"],
125
+ retryCodes: options?.retryCodes || ["429", "5XX"],
116
126
  };
117
127
 
118
128
  const requestRes = client._createRequest(context, {
@@ -132,7 +142,7 @@ async function $do(
132
142
 
133
143
  const doResult = await client._do(req, {
134
144
  context,
135
- errorCodes: ["401", "403", "404", "4XX", "5XX"],
145
+ errorCodes: ["429", "5XX"],
136
146
  retryConfig: context.retryConfig,
137
147
  retryCodes: context.retryCodes,
138
148
  });
@@ -153,7 +163,8 @@ async function $do(
153
163
  | SDKValidationError
154
164
  >(
155
165
  M.nil(200, z.void()),
156
- M.fail([401, 403, 404, "4XX"]),
166
+ M.nil([401, 403, 404], z.void()),
167
+ M.fail(429),
157
168
  M.fail("5XX"),
158
169
  )(response, req);
159
170
  if (!result.ok) {
@@ -22,6 +22,7 @@ import { SenseiProductivityError } from "../models/errors/sensei-productivity-er
22
22
  import * as operations from "../models/operations/index.js";
23
23
  import { APICall, APIPromise } from "../types/async.js";
24
24
  import { Result } from "../types/fp.js";
25
+ import * as types$ from "../types/primitives.js";
25
26
 
26
27
  /**
27
28
  * List all categories
@@ -31,7 +32,7 @@ export function categoriesGetAll(
31
32
  options?: RequestOptions,
32
33
  ): APIPromise<
33
34
  Result<
34
- Array<operations.ListCategoriesResponse>,
35
+ Array<operations.ListCategoriesResponse> | undefined,
35
36
  | SenseiProductivityError
36
37
  | ResponseValidationError
37
38
  | ConnectionError
@@ -54,7 +55,7 @@ async function $do(
54
55
  ): Promise<
55
56
  [
56
57
  Result<
57
- Array<operations.ListCategoriesResponse>,
58
+ Array<operations.ListCategoriesResponse> | undefined,
58
59
  | SenseiProductivityError
59
60
  | ResponseValidationError
60
61
  | ConnectionError
@@ -88,8 +89,18 @@ async function $do(
88
89
  securitySource: client._options.bearerAuth,
89
90
  retryConfig: options?.retries
90
91
  || client._options.retryConfig
92
+ || {
93
+ strategy: "backoff",
94
+ backoff: {
95
+ initialInterval: 1000,
96
+ maxInterval: 60000,
97
+ exponent: 1.3,
98
+ maxElapsedTime: 3600000,
99
+ },
100
+ retryConnectionErrors: true,
101
+ }
91
102
  || { strategy: "none" },
92
- retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"],
103
+ retryCodes: options?.retryCodes || ["429", "5XX"],
93
104
  };
94
105
 
95
106
  const requestRes = client._createRequest(context, {
@@ -108,7 +119,7 @@ async function $do(
108
119
 
109
120
  const doResult = await client._do(req, {
110
121
  context,
111
- errorCodes: ["401", "4XX", "5XX"],
122
+ errorCodes: ["429", "5XX"],
112
123
  retryConfig: context.retryConfig,
113
124
  retryCodes: context.retryCodes,
114
125
  });
@@ -118,7 +129,7 @@ async function $do(
118
129
  const response = doResult.value;
119
130
 
120
131
  const [result] = await M.match<
121
- Array<operations.ListCategoriesResponse>,
132
+ Array<operations.ListCategoriesResponse> | undefined,
122
133
  | SenseiProductivityError
123
134
  | ResponseValidationError
124
135
  | ConnectionError
@@ -128,8 +139,15 @@ async function $do(
128
139
  | UnexpectedClientError
129
140
  | SDKValidationError
130
141
  >(
131
- M.json(200, z.array(operations.ListCategoriesResponse$inboundSchema)),
132
- M.fail([401, "4XX"]),
142
+ M.json(
143
+ 200,
144
+ types$.optional(z.array(operations.ListCategoriesResponse$inboundSchema)),
145
+ ),
146
+ M.nil(
147
+ 401,
148
+ types$.optional(z.array(operations.ListCategoriesResponse$inboundSchema)),
149
+ ),
150
+ M.fail(429),
133
151
  M.fail("5XX"),
134
152
  )(response, req);
135
153
  if (!result.ok) {
@@ -24,6 +24,7 @@ import { SenseiProductivityError } from "../models/errors/sensei-productivity-er
24
24
  import * as operations from "../models/operations/index.js";
25
25
  import { APICall, APIPromise } from "../types/async.js";
26
26
  import { Result } from "../types/fp.js";
27
+ import * as types$ from "../types/primitives.js";
27
28
 
28
29
  /**
29
30
  * Update a category (school admins only)
@@ -34,7 +35,7 @@ export function categoriesUpdate(
34
35
  options?: RequestOptions,
35
36
  ): APIPromise<
36
37
  Result<
37
- operations.UpdateCategoryResponse,
38
+ operations.UpdateCategoryResponse | undefined,
38
39
  | SenseiProductivityError
39
40
  | ResponseValidationError
40
41
  | ConnectionError
@@ -59,7 +60,7 @@ async function $do(
59
60
  ): Promise<
60
61
  [
61
62
  Result<
62
- operations.UpdateCategoryResponse,
63
+ operations.UpdateCategoryResponse | undefined,
63
64
  | SenseiProductivityError
64
65
  | ResponseValidationError
65
66
  | ConnectionError
@@ -112,8 +113,18 @@ async function $do(
112
113
  securitySource: client._options.bearerAuth,
113
114
  retryConfig: options?.retries
114
115
  || client._options.retryConfig
116
+ || {
117
+ strategy: "backoff",
118
+ backoff: {
119
+ initialInterval: 1000,
120
+ maxInterval: 60000,
121
+ exponent: 1.3,
122
+ maxElapsedTime: 3600000,
123
+ },
124
+ retryConnectionErrors: true,
125
+ }
115
126
  || { strategy: "none" },
116
- retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"],
127
+ retryCodes: options?.retryCodes || ["429", "5XX"],
117
128
  };
118
129
 
119
130
  const requestRes = client._createRequest(context, {
@@ -133,7 +144,7 @@ async function $do(
133
144
 
134
145
  const doResult = await client._do(req, {
135
146
  context,
136
- errorCodes: ["400", "401", "403", "404", "4XX", "5XX"],
147
+ errorCodes: ["429", "5XX"],
137
148
  retryConfig: context.retryConfig,
138
149
  retryCodes: context.retryCodes,
139
150
  });
@@ -143,7 +154,7 @@ async function $do(
143
154
  const response = doResult.value;
144
155
 
145
156
  const [result] = await M.match<
146
- operations.UpdateCategoryResponse,
157
+ operations.UpdateCategoryResponse | undefined,
147
158
  | SenseiProductivityError
148
159
  | ResponseValidationError
149
160
  | ConnectionError
@@ -153,8 +164,15 @@ async function $do(
153
164
  | UnexpectedClientError
154
165
  | SDKValidationError
155
166
  >(
156
- M.json(200, operations.UpdateCategoryResponse$inboundSchema),
157
- M.fail([400, 401, 403, 404, "4XX"]),
167
+ M.json(
168
+ 200,
169
+ types$.optional(operations.UpdateCategoryResponse$inboundSchema),
170
+ ),
171
+ M.nil(
172
+ [400, 401, 403, 404],
173
+ types$.optional(operations.UpdateCategoryResponse$inboundSchema),
174
+ ),
175
+ M.fail(429),
158
176
  M.fail("5XX"),
159
177
  )(response, req);
160
178
  if (!result.ok) {
@@ -88,8 +88,18 @@ async function $do(
88
88
  securitySource: client._options.bearerAuth,
89
89
  retryConfig: options?.retries
90
90
  || client._options.retryConfig
91
+ || {
92
+ strategy: "backoff",
93
+ backoff: {
94
+ initialInterval: 1000,
95
+ maxInterval: 60000,
96
+ exponent: 1.3,
97
+ maxElapsedTime: 3600000,
98
+ },
99
+ retryConnectionErrors: true,
100
+ }
91
101
  || { strategy: "none" },
92
- retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"],
102
+ retryCodes: options?.retryCodes || ["429", "5XX"],
93
103
  };
94
104
 
95
105
  const requestRes = client._createRequest(context, {
@@ -108,7 +118,7 @@ async function $do(
108
118
 
109
119
  const doResult = await client._do(req, {
110
120
  context,
111
- errorCodes: ["4XX", "5XX"],
121
+ errorCodes: ["429", "5XX"],
112
122
  retryConfig: context.retryConfig,
113
123
  retryCodes: context.retryCodes,
114
124
  });
@@ -129,7 +139,7 @@ async function $do(
129
139
  | SDKValidationError
130
140
  >(
131
141
  M.json(200, z.array(operations.ListSchoolsResponse$inboundSchema)),
132
- M.fail("4XX"),
142
+ M.fail(429),
133
143
  M.fail("5XX"),
134
144
  )(response, req);
135
145
  if (!result.ok) {