@cravery/firebase 0.0.36 → 0.0.37

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 (314) hide show
  1. package/dist/converters/equipment/content.d.ts +4 -0
  2. package/dist/converters/equipment/content.d.ts.map +1 -0
  3. package/dist/converters/equipment/content.js +13 -0
  4. package/dist/converters/equipment/content.js.map +1 -0
  5. package/dist/converters/equipment/index.d.ts +4 -0
  6. package/dist/converters/equipment/index.d.ts.map +1 -0
  7. package/dist/{iam → converters/equipment}/index.js +3 -2
  8. package/dist/converters/equipment/index.js.map +1 -0
  9. package/dist/converters/equipment/meta.d.ts +4 -0
  10. package/dist/converters/equipment/meta.d.ts.map +1 -0
  11. package/dist/converters/equipment/meta.js +26 -0
  12. package/dist/converters/equipment/meta.js.map +1 -0
  13. package/dist/converters/equipment/user.d.ts +4 -0
  14. package/dist/converters/equipment/user.d.ts.map +1 -0
  15. package/dist/converters/equipment/user.js +26 -0
  16. package/dist/converters/equipment/user.js.map +1 -0
  17. package/dist/converters/index.d.ts +8 -0
  18. package/dist/converters/index.d.ts.map +1 -0
  19. package/dist/{repository → converters}/index.js +6 -6
  20. package/dist/converters/index.js.map +1 -0
  21. package/dist/converters/ingredients/content.d.ts +4 -0
  22. package/dist/converters/ingredients/content.d.ts.map +1 -0
  23. package/dist/converters/ingredients/content.js +13 -0
  24. package/dist/converters/ingredients/content.js.map +1 -0
  25. package/dist/converters/ingredients/index.d.ts +4 -0
  26. package/dist/converters/ingredients/index.d.ts.map +1 -0
  27. package/dist/{equipment → converters/ingredients}/index.js +3 -1
  28. package/dist/converters/ingredients/index.js.map +1 -0
  29. package/dist/converters/ingredients/meta.d.ts +4 -0
  30. package/dist/converters/ingredients/meta.d.ts.map +1 -0
  31. package/dist/converters/ingredients/meta.js +26 -0
  32. package/dist/converters/ingredients/meta.js.map +1 -0
  33. package/dist/converters/ingredients/user.d.ts +4 -0
  34. package/dist/converters/ingredients/user.d.ts.map +1 -0
  35. package/dist/converters/ingredients/user.js +26 -0
  36. package/dist/converters/ingredients/user.js.map +1 -0
  37. package/dist/converters/recipes/comment.d.ts.map +1 -0
  38. package/dist/{converter → converters/recipes}/comment.js +4 -14
  39. package/dist/converters/recipes/comment.js.map +1 -0
  40. package/dist/converters/recipes/content.d.ts +4 -0
  41. package/dist/converters/recipes/content.d.ts.map +1 -0
  42. package/dist/converters/recipes/content.js +13 -0
  43. package/dist/converters/recipes/content.js.map +1 -0
  44. package/dist/converters/recipes/index.d.ts +4 -0
  45. package/dist/converters/recipes/index.d.ts.map +1 -0
  46. package/dist/converters/recipes/index.js +20 -0
  47. package/dist/converters/recipes/index.js.map +1 -0
  48. package/dist/converters/recipes/meta.d.ts +4 -0
  49. package/dist/converters/recipes/meta.d.ts.map +1 -0
  50. package/dist/converters/recipes/meta.js +26 -0
  51. package/dist/converters/recipes/meta.js.map +1 -0
  52. package/dist/converters/reports/index.d.ts +3 -0
  53. package/dist/converters/reports/index.d.ts.map +1 -0
  54. package/dist/{ingredient → converters/reports}/index.js +2 -1
  55. package/dist/converters/reports/index.js.map +1 -0
  56. package/dist/converters/reports/report.d.ts.map +1 -0
  57. package/dist/converters/reports/report.js +26 -0
  58. package/dist/converters/reports/report.js.map +1 -0
  59. package/dist/converters/reports/update.d.ts +4 -0
  60. package/dist/converters/reports/update.d.ts.map +1 -0
  61. package/dist/converters/reports/update.js +26 -0
  62. package/dist/converters/reports/update.js.map +1 -0
  63. package/dist/converters/settings/index.d.ts +2 -0
  64. package/dist/converters/settings/index.d.ts.map +1 -0
  65. package/dist/{transform → converters/settings}/index.js +1 -1
  66. package/dist/converters/settings/index.js.map +1 -0
  67. package/dist/converters/settings/settings.d.ts.map +1 -0
  68. package/dist/converters/settings/settings.js +26 -0
  69. package/dist/converters/settings/settings.js.map +1 -0
  70. package/dist/converters/subscriptions/index.d.ts +2 -0
  71. package/dist/converters/subscriptions/index.d.ts.map +1 -0
  72. package/dist/{asset → converters/subscriptions}/index.js +1 -1
  73. package/dist/converters/subscriptions/index.js.map +1 -0
  74. package/dist/converters/subscriptions/subscription.d.ts +4 -0
  75. package/dist/converters/subscriptions/subscription.d.ts.map +1 -0
  76. package/dist/converters/subscriptions/subscription.js +34 -0
  77. package/dist/converters/subscriptions/subscription.js.map +1 -0
  78. package/dist/converters/users/bookmark.d.ts +4 -0
  79. package/dist/converters/users/bookmark.d.ts.map +1 -0
  80. package/dist/converters/users/bookmark.js +26 -0
  81. package/dist/converters/users/bookmark.js.map +1 -0
  82. package/dist/converters/users/index.d.ts +4 -0
  83. package/dist/converters/users/index.d.ts.map +1 -0
  84. package/dist/converters/users/index.js +20 -0
  85. package/dist/converters/users/index.js.map +1 -0
  86. package/dist/converters/users/profile.d.ts.map +1 -0
  87. package/dist/converters/users/profile.js +26 -0
  88. package/dist/converters/users/profile.js.map +1 -0
  89. package/dist/converters/users/user.d.ts.map +1 -0
  90. package/dist/converters/users/user.js +26 -0
  91. package/dist/converters/users/user.js.map +1 -0
  92. package/dist/index.d.ts +2 -4
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +2 -4
  95. package/dist/index.js.map +1 -1
  96. package/dist/lib/index.d.ts +2 -1
  97. package/dist/lib/index.d.ts.map +1 -1
  98. package/dist/lib/index.js +2 -1
  99. package/dist/lib/index.js.map +1 -1
  100. package/dist/lib/strip-undefined.d.ts.map +1 -0
  101. package/dist/lib/strip-undefined.js.map +1 -0
  102. package/dist/lib/timestamp.d.ts.map +1 -0
  103. package/dist/{utils → lib}/timestamp.js +0 -4
  104. package/dist/lib/timestamp.js.map +1 -0
  105. package/package.json +33 -59
  106. package/src/converters/equipment/content.ts +17 -0
  107. package/src/converters/equipment/index.ts +3 -0
  108. package/src/converters/equipment/meta.ts +36 -0
  109. package/src/converters/equipment/user.ts +36 -0
  110. package/src/converters/index.ts +7 -0
  111. package/src/converters/ingredients/content.ts +17 -0
  112. package/src/converters/ingredients/index.ts +3 -0
  113. package/src/converters/ingredients/meta.ts +36 -0
  114. package/src/converters/ingredients/user.ts +38 -0
  115. package/src/{converter → converters/recipes}/comment.ts +36 -41
  116. package/src/converters/recipes/content.ts +17 -0
  117. package/src/converters/recipes/index.ts +3 -0
  118. package/src/converters/recipes/meta.ts +36 -0
  119. package/src/converters/reports/index.ts +2 -0
  120. package/src/converters/reports/report.ts +36 -0
  121. package/src/converters/reports/update.ts +36 -0
  122. package/src/converters/settings/index.ts +1 -0
  123. package/src/{converter → converters/settings}/settings.ts +36 -49
  124. package/src/converters/subscriptions/index.ts +1 -0
  125. package/src/converters/subscriptions/subscription.ts +85 -0
  126. package/src/converters/users/bookmark.ts +36 -0
  127. package/src/converters/users/index.ts +3 -0
  128. package/src/{converter → converters/users}/profile.ts +36 -44
  129. package/src/{converter → converters/users}/user.ts +36 -43
  130. package/src/index.ts +2 -4
  131. package/src/{utils → lib}/index.ts +2 -3
  132. package/src/{utils → lib}/strip-undefined.ts +32 -32
  133. package/src/{utils → lib}/timestamp.ts +44 -48
  134. package/dist/asset/index.d.ts +0 -2
  135. package/dist/asset/index.d.ts.map +0 -1
  136. package/dist/asset/index.js.map +0 -1
  137. package/dist/asset/repository.d.ts +0 -41
  138. package/dist/asset/repository.d.ts.map +0 -1
  139. package/dist/asset/repository.js +0 -96
  140. package/dist/asset/repository.js.map +0 -1
  141. package/dist/converter/comment.d.ts.map +0 -1
  142. package/dist/converter/comment.js.map +0 -1
  143. package/dist/converter/equipment.d.ts +0 -5
  144. package/dist/converter/equipment.d.ts.map +0 -1
  145. package/dist/converter/equipment.js +0 -52
  146. package/dist/converter/equipment.js.map +0 -1
  147. package/dist/converter/index.d.ts +0 -10
  148. package/dist/converter/index.d.ts.map +0 -1
  149. package/dist/converter/index.js +0 -26
  150. package/dist/converter/index.js.map +0 -1
  151. package/dist/converter/ingredient.d.ts +0 -5
  152. package/dist/converter/ingredient.d.ts.map +0 -1
  153. package/dist/converter/ingredient.js +0 -54
  154. package/dist/converter/ingredient.js.map +0 -1
  155. package/dist/converter/profile.d.ts.map +0 -1
  156. package/dist/converter/profile.js +0 -40
  157. package/dist/converter/profile.js.map +0 -1
  158. package/dist/converter/recipe.d.ts +0 -5
  159. package/dist/converter/recipe.d.ts.map +0 -1
  160. package/dist/converter/recipe.js +0 -77
  161. package/dist/converter/recipe.js.map +0 -1
  162. package/dist/converter/report.d.ts.map +0 -1
  163. package/dist/converter/report.js +0 -46
  164. package/dist/converter/report.js.map +0 -1
  165. package/dist/converter/settings.d.ts.map +0 -1
  166. package/dist/converter/settings.js +0 -44
  167. package/dist/converter/settings.js.map +0 -1
  168. package/dist/converter/submission.d.ts +0 -4
  169. package/dist/converter/submission.d.ts.map +0 -1
  170. package/dist/converter/submission.js +0 -41
  171. package/dist/converter/submission.js.map +0 -1
  172. package/dist/converter/user.d.ts.map +0 -1
  173. package/dist/converter/user.js +0 -39
  174. package/dist/converter/user.js.map +0 -1
  175. package/dist/equipment/equipment.repository.d.ts +0 -6
  176. package/dist/equipment/equipment.repository.d.ts.map +0 -1
  177. package/dist/equipment/equipment.repository.js +0 -11
  178. package/dist/equipment/equipment.repository.js.map +0 -1
  179. package/dist/equipment/index.d.ts +0 -2
  180. package/dist/equipment/index.d.ts.map +0 -1
  181. package/dist/equipment/index.js.map +0 -1
  182. package/dist/iam/converters.d.ts +0 -4
  183. package/dist/iam/converters.d.ts.map +0 -1
  184. package/dist/iam/converters.js +0 -39
  185. package/dist/iam/converters.js.map +0 -1
  186. package/dist/iam/index.d.ts +0 -3
  187. package/dist/iam/index.d.ts.map +0 -1
  188. package/dist/iam/index.js.map +0 -1
  189. package/dist/iam/profile.converter.d.ts +0 -4
  190. package/dist/iam/profile.converter.d.ts.map +0 -1
  191. package/dist/iam/profile.converter.js +0 -40
  192. package/dist/iam/profile.converter.js.map +0 -1
  193. package/dist/iam/user.converter.d.ts +0 -4
  194. package/dist/iam/user.converter.d.ts.map +0 -1
  195. package/dist/iam/user.converter.js +0 -39
  196. package/dist/iam/user.converter.js.map +0 -1
  197. package/dist/ingredient/index.d.ts +0 -2
  198. package/dist/ingredient/index.d.ts.map +0 -1
  199. package/dist/ingredient/index.js.map +0 -1
  200. package/dist/ingredient/ingredient.repository.d.ts +0 -6
  201. package/dist/ingredient/ingredient.repository.d.ts.map +0 -1
  202. package/dist/ingredient/ingredient.repository.js +0 -11
  203. package/dist/ingredient/ingredient.repository.js.map +0 -1
  204. package/dist/lib/asset.repository.d.ts +0 -13
  205. package/dist/lib/asset.repository.d.ts.map +0 -1
  206. package/dist/lib/asset.repository.js +0 -65
  207. package/dist/lib/asset.repository.js.map +0 -1
  208. package/dist/recipe/converters.d.ts +0 -5
  209. package/dist/recipe/converters.d.ts.map +0 -1
  210. package/dist/recipe/converters.js +0 -90
  211. package/dist/recipe/converters.js.map +0 -1
  212. package/dist/recipe/index.d.ts +0 -6
  213. package/dist/recipe/index.d.ts.map +0 -1
  214. package/dist/recipe/index.js +0 -22
  215. package/dist/recipe/index.js.map +0 -1
  216. package/dist/recipe/recipe.converter.d.ts +0 -5
  217. package/dist/recipe/recipe.converter.d.ts.map +0 -1
  218. package/dist/recipe/recipe.converter.js +0 -86
  219. package/dist/recipe/recipe.converter.js.map +0 -1
  220. package/dist/recipe/recipe.repository.d.ts +0 -22
  221. package/dist/recipe/recipe.repository.d.ts.map +0 -1
  222. package/dist/recipe/recipe.repository.js +0 -210
  223. package/dist/recipe/recipe.repository.js.map +0 -1
  224. package/dist/recipe/repository.d.ts +0 -26
  225. package/dist/recipe/repository.d.ts.map +0 -1
  226. package/dist/recipe/repository.js +0 -200
  227. package/dist/recipe/repository.js.map +0 -1
  228. package/dist/recipe/stats_repository.d.ts +0 -18
  229. package/dist/recipe/stats_repository.d.ts.map +0 -1
  230. package/dist/recipe/stats_repository.js +0 -195
  231. package/dist/recipe/stats_repository.js.map +0 -1
  232. package/dist/recipe/user_recipe_repository.d.ts +0 -26
  233. package/dist/recipe/user_recipe_repository.d.ts.map +0 -1
  234. package/dist/recipe/user_recipe_repository.js +0 -180
  235. package/dist/recipe/user_recipe_repository.js.map +0 -1
  236. package/dist/recipe/utils.d.ts +0 -7
  237. package/dist/recipe/utils.d.ts.map +0 -1
  238. package/dist/recipe/utils.js +0 -118
  239. package/dist/recipe/utils.js.map +0 -1
  240. package/dist/repository/base.d.ts +0 -36
  241. package/dist/repository/base.d.ts.map +0 -1
  242. package/dist/repository/base.js +0 -215
  243. package/dist/repository/base.js.map +0 -1
  244. package/dist/repository/equipment.d.ts +0 -14
  245. package/dist/repository/equipment.d.ts.map +0 -1
  246. package/dist/repository/equipment.js +0 -40
  247. package/dist/repository/equipment.js.map +0 -1
  248. package/dist/repository/index.d.ts +0 -8
  249. package/dist/repository/index.d.ts.map +0 -1
  250. package/dist/repository/index.js.map +0 -1
  251. package/dist/repository/ingredient.d.ts +0 -15
  252. package/dist/repository/ingredient.d.ts.map +0 -1
  253. package/dist/repository/ingredient.js +0 -46
  254. package/dist/repository/ingredient.js.map +0 -1
  255. package/dist/repository/recipe.d.ts +0 -17
  256. package/dist/repository/recipe.d.ts.map +0 -1
  257. package/dist/repository/recipe.js +0 -92
  258. package/dist/repository/recipe.js.map +0 -1
  259. package/dist/repository/recipe_stats.d.ts +0 -19
  260. package/dist/repository/recipe_stats.d.ts.map +0 -1
  261. package/dist/repository/recipe_stats.js +0 -121
  262. package/dist/repository/recipe_stats.js.map +0 -1
  263. package/dist/repository/report.d.ts +0 -15
  264. package/dist/repository/report.d.ts.map +0 -1
  265. package/dist/repository/report.js +0 -111
  266. package/dist/repository/report.js.map +0 -1
  267. package/dist/repository/user_recipe.d.ts +0 -39
  268. package/dist/repository/user_recipe.d.ts.map +0 -1
  269. package/dist/repository/user_recipe.js +0 -170
  270. package/dist/repository/user_recipe.js.map +0 -1
  271. package/dist/transform/index.d.ts +0 -2
  272. package/dist/transform/index.d.ts.map +0 -1
  273. package/dist/transform/index.js.map +0 -1
  274. package/dist/transform/recipe.d.ts +0 -7
  275. package/dist/transform/recipe.d.ts.map +0 -1
  276. package/dist/transform/recipe.js +0 -124
  277. package/dist/transform/recipe.js.map +0 -1
  278. package/dist/utils/cursor.d.ts +0 -14
  279. package/dist/utils/cursor.d.ts.map +0 -1
  280. package/dist/utils/cursor.js +0 -37
  281. package/dist/utils/cursor.js.map +0 -1
  282. package/dist/utils/index.d.ts +0 -4
  283. package/dist/utils/index.d.ts.map +0 -1
  284. package/dist/utils/index.js +0 -20
  285. package/dist/utils/index.js.map +0 -1
  286. package/dist/utils/strip-undefined.d.ts.map +0 -1
  287. package/dist/utils/strip-undefined.js.map +0 -1
  288. package/dist/utils/timestamp.d.ts.map +0 -1
  289. package/dist/utils/timestamp.js.map +0 -1
  290. package/src/converter/equipment.ts +0 -65
  291. package/src/converter/index.ts +0 -9
  292. package/src/converter/ingredient.ts +0 -67
  293. package/src/converter/recipe.ts +0 -86
  294. package/src/converter/report.ts +0 -53
  295. package/src/converter/submission.ts +0 -48
  296. package/src/repository/base.ts +0 -356
  297. package/src/repository/equipment.ts +0 -85
  298. package/src/repository/index.ts +0 -7
  299. package/src/repository/ingredient.ts +0 -107
  300. package/src/repository/recipe.ts +0 -149
  301. package/src/repository/recipe_stats.ts +0 -192
  302. package/src/repository/report.ts +0 -163
  303. package/src/repository/user_recipe.ts +0 -249
  304. package/src/transform/index.ts +0 -1
  305. package/src/transform/recipe.ts +0 -151
  306. package/src/utils/cursor.ts +0 -43
  307. /package/dist/{converter → converters/recipes}/comment.d.ts +0 -0
  308. /package/dist/{converter → converters/reports}/report.d.ts +0 -0
  309. /package/dist/{converter → converters/settings}/settings.d.ts +0 -0
  310. /package/dist/{converter → converters/users}/profile.d.ts +0 -0
  311. /package/dist/{converter → converters/users}/user.d.ts +0 -0
  312. /package/dist/{utils → lib}/strip-undefined.d.ts +0 -0
  313. /package/dist/{utils → lib}/strip-undefined.js +0 -0
  314. /package/dist/{utils → lib}/timestamp.d.ts +0 -0
@@ -1,7 +0,0 @@
1
- import { Recipe, RecipeContent, RecipeMeta } from "@cravery/core";
2
- export declare function mergeRecipe(meta: RecipeMeta, content: RecipeContent): Recipe;
3
- export declare function splitRecipe(recipe: Recipe): {
4
- meta: Omit<RecipeMeta, "id">;
5
- content: RecipeContent;
6
- };
7
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/recipe/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAElE,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CA2D5E;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG;IAC3C,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC7B,OAAO,EAAE,aAAa,CAAC;CACxB,CA4EA"}
@@ -1,118 +0,0 @@
1
- "use strict";
2
- var __rest = (this && this.__rest) || function (s, e) {
3
- var t = {};
4
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
- t[p] = s[p];
6
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
- t[p[i]] = s[p[i]];
10
- }
11
- return t;
12
- };
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.mergeRecipe = mergeRecipe;
15
- exports.splitRecipe = splitRecipe;
16
- function mergeRecipe(meta, content) {
17
- var _a;
18
- const equipment = (_a = meta.equipment) === null || _a === void 0 ? void 0 : _a.map((equipMeta, index) => {
19
- var _a;
20
- const equipContent = (_a = content.equipment) === null || _a === void 0 ? void 0 : _a[index];
21
- if (!equipContent) {
22
- throw new Error(`Missing equipment content at index ${index}`);
23
- }
24
- return Object.assign(Object.assign({}, equipMeta), equipContent);
25
- });
26
- const ingredientSections = meta.ingredientSections.map((sectionMeta, sectionIndex) => {
27
- var _a;
28
- return ({
29
- slug: sectionMeta.slug,
30
- title: (_a = content.ingredientSections[sectionIndex]) === null || _a === void 0 ? void 0 : _a.title,
31
- ingredients: sectionMeta.ingredients.map((ingredMeta, ingredIndex) => {
32
- var _a;
33
- return (Object.assign(Object.assign({}, ingredMeta), (((_a = content.ingredientSections[sectionIndex]) === null || _a === void 0 ? void 0 : _a.ingredients[ingredIndex]) || {})));
34
- }),
35
- });
36
- });
37
- const instructions = meta.instructions.map((instrMeta, index) => (Object.assign(Object.assign({}, instrMeta), (content.instructions[index] || {}))));
38
- return {
39
- id: meta.id,
40
- allergens: meta.allergens,
41
- confidence: meta.confidence,
42
- createdAt: meta.createdAt,
43
- createdBy: meta.createdBy,
44
- cuisine: meta.cuisine,
45
- deletedAt: meta.deletedAt,
46
- dietaryTags: meta.dietaryTags,
47
- difficulty: meta.difficulty,
48
- imageUrl: meta.imageUrl,
49
- mealTypes: meta.mealTypes,
50
- nutrition: meta.nutrition,
51
- originalLocale: meta.originalLocale,
52
- servings: meta.servings,
53
- source: meta.source,
54
- sourceUrl: meta.sourceUrl,
55
- spiciness: meta.spiciness,
56
- status: meta.status,
57
- time: meta.time,
58
- updatedAt: meta.updatedAt,
59
- equipment,
60
- ingredientSections,
61
- instructions,
62
- description: content.description,
63
- locale: content.locale,
64
- tips: content.tips,
65
- title: content.title,
66
- };
67
- }
68
- function splitRecipe(recipe) {
69
- const { id, description, equipment, ingredientSections, instructions, locale, tips, title } = recipe, metaFields = __rest(recipe, ["id", "description", "equipment", "ingredientSections", "instructions", "locale", "tips", "title"]);
70
- const equipmentMeta = equipment === null || equipment === void 0 ? void 0 : equipment.map(({ required, slug }) => ({
71
- required,
72
- slug,
73
- }));
74
- const equipmentContent = equipment === null || equipment === void 0 ? void 0 : equipment.map(({ name, notes, slug }) => ({
75
- name,
76
- notes,
77
- slug,
78
- }));
79
- const ingredientSectionsMeta = ingredientSections.map(({ ingredients, slug }) => ({
80
- slug,
81
- ingredients: ingredients.map(({ quantity, required, slug, unit }) => ({
82
- quantity,
83
- required,
84
- slug,
85
- unit,
86
- })),
87
- }));
88
- const ingredientSectionsContent = ingredientSections.map(({ ingredients, slug, title }) => ({
89
- slug,
90
- title,
91
- ingredients: ingredients.map(({ name, notes, slug }) => ({
92
- name,
93
- notes,
94
- slug,
95
- })),
96
- }));
97
- const instructionsMeta = instructions.map(({ duration, step, temperature }) => ({
98
- duration,
99
- step,
100
- temperature,
101
- }));
102
- const instructionsContent = instructions.map(({ step, text }) => ({
103
- step,
104
- text,
105
- }));
106
- const content = {
107
- description,
108
- equipment: equipmentContent,
109
- ingredientSections: ingredientSectionsContent,
110
- instructions: instructionsContent,
111
- locale,
112
- tips,
113
- title,
114
- };
115
- const meta = Object.assign(Object.assign({}, metaFields), { equipment: equipmentMeta, ingredientSections: ingredientSectionsMeta, instructions: instructionsMeta });
116
- return { meta, content };
117
- }
118
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/recipe/utils.ts"],"names":[],"mappings":"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"}
@@ -1,36 +0,0 @@
1
- import { Firestore, FirestoreDataConverter, Query } from "firebase-admin/firestore";
2
- import { type Entity, type Locale, type CursorPaginatedResult, type PaginationDirection } from "@cravery/core";
3
- export interface SplitResult<TMeta, TContent> {
4
- meta: Omit<TMeta, "id">;
5
- content: TContent;
6
- }
7
- export declare abstract class BaseRepository<TEntity extends TMeta & TContent, TMeta extends Entity, TContent> {
8
- protected db: Firestore;
9
- protected abstract readonly collectionName: string;
10
- protected abstract readonly entityName: string;
11
- protected abstract readonly metaConverter: FirestoreDataConverter<TMeta>;
12
- protected abstract readonly contentConverter: FirestoreDataConverter<TContent>;
13
- constructor(db: Firestore);
14
- protected abstract merge(meta: TMeta, content: TContent): TEntity;
15
- protected abstract split(entity: TEntity): SplitResult<TMeta, TContent>;
16
- protected get metaCollection(): FirebaseFirestore.CollectionReference<TMeta, FirebaseFirestore.DocumentData>;
17
- protected contentCollection(entityId: string): FirebaseFirestore.CollectionReference<TContent, FirebaseFirestore.DocumentData>;
18
- create(entity: Omit<TEntity, "id">, locale: Locale, id?: string): Promise<TEntity>;
19
- createWithAllLocales(meta: Omit<TMeta, "id">, contentByLocale: Map<Locale, TContent>, id?: string): Promise<string>;
20
- getById(entityId: string, locale: Locale): Promise<TEntity>;
21
- getMeta(entityId: string): Promise<TMeta>;
22
- getContent(entityId: string, locale: Locale): Promise<TContent>;
23
- updateMeta(entityId: string, updates: Partial<Omit<TMeta, "id" | "createdAt">>): Promise<void>;
24
- updateContent(entityId: string, locale: Locale, content: Partial<TContent>): Promise<void>;
25
- createContent(entityId: string, locale: Locale, content: TContent): Promise<void>;
26
- getAllContent(entityId: string): Promise<(TContent & {
27
- locale: string;
28
- })[]>;
29
- delete(entityId: string): Promise<void>;
30
- getPaginated(locale: Locale, limit?: number, cursor?: string, direction?: PaginationDirection): Promise<CursorPaginatedResult<TEntity>>;
31
- exists(entityId: string): Promise<boolean>;
32
- protected executePaginatedQuery(baseQuery: Query<TMeta>, locale: Locale, limit: number, cursor?: string, direction?: PaginationDirection): Promise<CursorPaginatedResult<TEntity>>;
33
- protected executeSimplePaginatedQuery(baseQuery: Query<TMeta>, locale: Locale, limit: number, cursor?: string, direction?: PaginationDirection): Promise<CursorPaginatedResult<TEntity>>;
34
- protected hydrate(docs: FirebaseFirestore.QueryDocumentSnapshot<TMeta>[], locale: Locale): Promise<TEntity[]>;
35
- }
36
- //# sourceMappingURL=base.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/repository/base.ts"],"names":[],"mappings":"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"}
@@ -1,215 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BaseRepository = void 0;
4
- const firestore_1 = require("firebase-admin/firestore");
5
- const core_1 = require("@cravery/core");
6
- const cursor_1 = require("../utils/cursor");
7
- class BaseRepository {
8
- constructor(db) {
9
- this.db = db;
10
- }
11
- get metaCollection() {
12
- return this.db
13
- .collection(this.collectionName)
14
- .withConverter(this.metaConverter);
15
- }
16
- contentCollection(entityId) {
17
- return this.db
18
- .collection(this.collectionName)
19
- .doc(entityId)
20
- .collection(core_1.COLLECTIONS.Content)
21
- .withConverter(this.contentConverter);
22
- }
23
- async create(entity, locale, id) {
24
- const { meta, content } = this.split(entity);
25
- let entityId;
26
- if (id) {
27
- await this.metaCollection.doc(id).set(meta);
28
- entityId = id;
29
- }
30
- else {
31
- const metaRef = await this.metaCollection.add(meta);
32
- entityId = metaRef.id;
33
- }
34
- await this.contentCollection(entityId).doc(locale).set(content);
35
- return Object.assign({ id: entityId }, entity);
36
- }
37
- async createWithAllLocales(meta, contentByLocale, id) {
38
- const batch = this.db.batch();
39
- const entityId = id || this.db.collection(this.collectionName).doc().id;
40
- const metaRef = this.db.collection(this.collectionName).doc(entityId);
41
- batch.set(metaRef, meta);
42
- for (const [locale, content] of contentByLocale) {
43
- const contentRef = metaRef.collection(core_1.COLLECTIONS.Content).doc(locale);
44
- batch.set(contentRef, content);
45
- }
46
- await batch.commit();
47
- return entityId;
48
- }
49
- async getById(entityId, locale) {
50
- const [metaDoc, contentDoc] = await Promise.all([
51
- this.metaCollection.doc(entityId).get(),
52
- this.contentCollection(entityId).doc(locale).get(),
53
- ]);
54
- if (!metaDoc.exists) {
55
- throw new Error(`${this.entityName} ${entityId} not found`);
56
- }
57
- const meta = metaDoc.data();
58
- if (!contentDoc.exists) {
59
- throw new Error(`${this.entityName} ${entityId} has no content for locale ${locale}`);
60
- }
61
- const content = contentDoc.data();
62
- return this.merge(meta, content);
63
- }
64
- async getMeta(entityId) {
65
- const metaDoc = await this.metaCollection.doc(entityId).get();
66
- if (!metaDoc.exists) {
67
- throw new Error(`${this.entityName} ${entityId} not found`);
68
- }
69
- return metaDoc.data();
70
- }
71
- async getContent(entityId, locale) {
72
- const contentDoc = await this.contentCollection(entityId).doc(locale).get();
73
- if (!contentDoc.exists) {
74
- throw new Error(`${this.entityName} ${entityId} has no content for locale ${locale}`);
75
- }
76
- return contentDoc.data();
77
- }
78
- async updateMeta(entityId, updates) {
79
- await this.metaCollection.doc(entityId).update(Object.assign(Object.assign({}, updates), { updatedAt: firestore_1.Timestamp.now() }));
80
- }
81
- async updateContent(entityId, locale, content) {
82
- await this.contentCollection(entityId)
83
- .doc(locale)
84
- .set(content, { merge: true });
85
- }
86
- async createContent(entityId, locale, content) {
87
- const metaDoc = await this.metaCollection.doc(entityId).get();
88
- if (!metaDoc.exists) {
89
- throw new Error(`${this.entityName} ${entityId} not found`);
90
- }
91
- const existingContent = await this.contentCollection(entityId)
92
- .doc(locale)
93
- .get();
94
- if (existingContent.exists) {
95
- throw new Error(`Content for ${this.entityName.toLowerCase()} ${entityId} in locale ${locale} already exists. Use updateContent() instead.`);
96
- }
97
- await this.contentCollection(entityId).doc(locale).set(content);
98
- }
99
- async getAllContent(entityId) {
100
- const metaDoc = await this.metaCollection.doc(entityId).get();
101
- if (!metaDoc.exists) {
102
- throw new Error(`${this.entityName} ${entityId} not found`);
103
- }
104
- const snapshot = await this.contentCollection(entityId).get();
105
- if (snapshot.empty) {
106
- throw new Error(`${this.entityName} ${entityId} has no content`);
107
- }
108
- return snapshot.docs.map((doc) => (Object.assign(Object.assign({}, doc.data()), { locale: doc.id })));
109
- }
110
- async delete(entityId) {
111
- await this.metaCollection.doc(entityId).update({
112
- status: "deleted",
113
- deletedAt: firestore_1.Timestamp.now(),
114
- updatedAt: firestore_1.Timestamp.now(),
115
- });
116
- }
117
- async getPaginated(locale, limit = 20, cursor, direction = "forward") {
118
- const baseQuery = this.metaCollection.where("status", "!=", "deleted");
119
- return this.executePaginatedQuery(baseQuery, locale, limit, cursor, direction);
120
- }
121
- async exists(entityId) {
122
- const doc = await this.metaCollection.doc(entityId).get();
123
- return doc.exists;
124
- }
125
- async executePaginatedQuery(baseQuery, locale, limit, cursor, direction = "forward") {
126
- const isForward = direction === "forward";
127
- const sortDir = isForward ? "desc" : "asc";
128
- // Only order by createdAt - FieldPath.documentId() causes issues with inequality filters
129
- let query = baseQuery.orderBy("createdAt", sortDir);
130
- if (cursor) {
131
- const [timestamp] = (0, cursor_1.cursorToFirestoreValues)(cursor);
132
- query = query.startAfter(timestamp);
133
- }
134
- const snapshot = await query.limit(limit + 1).get();
135
- const hasMore = snapshot.docs.length > limit;
136
- let docs = hasMore ? snapshot.docs.slice(0, -1) : snapshot.docs;
137
- if (!isForward) {
138
- docs = docs.reverse();
139
- }
140
- if (docs.length === 0) {
141
- return {
142
- data: [],
143
- startCursor: null,
144
- endCursor: null,
145
- hasNextPage: false,
146
- hasPreviousPage: false,
147
- };
148
- }
149
- const entities = await this.hydrate(docs, locale);
150
- const firstDoc = docs[0];
151
- const lastDoc = docs[docs.length - 1];
152
- const firstCreatedAt = firstDoc.get("createdAt");
153
- const lastCreatedAt = lastDoc.get("createdAt");
154
- return {
155
- data: entities,
156
- startCursor: (0, cursor_1.encodeCursor)(firstCreatedAt, firstDoc.id),
157
- endCursor: (0, cursor_1.encodeCursor)(lastCreatedAt, lastDoc.id),
158
- hasNextPage: isForward ? hasMore : !!cursor,
159
- hasPreviousPage: isForward ? !!cursor : hasMore,
160
- };
161
- }
162
- async executeSimplePaginatedQuery(baseQuery, locale, limit, cursor, direction = "forward") {
163
- const isForward = direction === "forward";
164
- const sortDir = isForward ? "desc" : "asc";
165
- // Only use createdAt ordering - no FieldPath.documentId()
166
- let query = baseQuery.orderBy("createdAt", sortDir);
167
- if (cursor) {
168
- const [timestamp] = (0, cursor_1.cursorToFirestoreValues)(cursor);
169
- query = query.startAfter(timestamp);
170
- }
171
- const snapshot = await query.limit(limit + 1).get();
172
- const hasMore = snapshot.docs.length > limit;
173
- let docs = hasMore ? snapshot.docs.slice(0, -1) : snapshot.docs;
174
- if (!isForward) {
175
- docs = docs.reverse();
176
- }
177
- if (docs.length === 0) {
178
- return {
179
- data: [],
180
- startCursor: null,
181
- endCursor: null,
182
- hasNextPage: false,
183
- hasPreviousPage: false,
184
- };
185
- }
186
- const entities = await this.hydrate(docs, locale);
187
- const firstDoc = docs[0];
188
- const lastDoc = docs[docs.length - 1];
189
- const firstCreatedAt = firstDoc.get("createdAt");
190
- const lastCreatedAt = lastDoc.get("createdAt");
191
- return {
192
- data: entities,
193
- startCursor: (0, cursor_1.encodeCursor)(firstCreatedAt, firstDoc.id),
194
- endCursor: (0, cursor_1.encodeCursor)(lastCreatedAt, lastDoc.id),
195
- hasNextPage: isForward ? hasMore : !!cursor,
196
- hasPreviousPage: isForward ? !!cursor : hasMore,
197
- };
198
- }
199
- async hydrate(docs, locale) {
200
- const contentDocs = await Promise.all(docs.map((metaDoc) => this.contentCollection(metaDoc.id).doc(locale).get()));
201
- return docs
202
- .map((metaDoc, index) => {
203
- const meta = metaDoc.data();
204
- const contentDoc = contentDocs[index];
205
- if (!contentDoc.exists) {
206
- return null;
207
- }
208
- const content = contentDoc.data();
209
- return this.merge(meta, content);
210
- })
211
- .filter((item) => item !== null);
212
- }
213
- }
214
- exports.BaseRepository = BaseRepository;
215
- //# sourceMappingURL=base.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/repository/base.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- import { Firestore } from "firebase-admin/firestore";
2
- import { type EquipmentEntity, type EquipmentEntityMeta, type EquipmentEntityContent, type EquipmentCategory, type Locale, type CursorPaginatedResult, type PaginationDirection } from "@cravery/core";
3
- import { BaseRepository, SplitResult } from "./base";
4
- export declare class EquipmentRepository extends BaseRepository<EquipmentEntity, EquipmentEntityMeta, EquipmentEntityContent> {
5
- protected readonly collectionName: string;
6
- protected readonly entityName = "Equipment";
7
- protected readonly metaConverter: FirebaseFirestore.FirestoreDataConverter<EquipmentEntityMeta, FirebaseFirestore.DocumentData>;
8
- protected readonly contentConverter: FirebaseFirestore.FirestoreDataConverter<EquipmentEntityContent, FirebaseFirestore.DocumentData>;
9
- constructor(db: Firestore);
10
- protected merge(meta: EquipmentEntityMeta, content: EquipmentEntityContent): EquipmentEntity;
11
- protected split(equipment: EquipmentEntity): SplitResult<EquipmentEntityMeta, EquipmentEntityContent>;
12
- getByCategory(category: EquipmentCategory, locale: Locale, limit?: number, cursor?: string, direction?: PaginationDirection): Promise<CursorPaginatedResult<EquipmentEntity>>;
13
- }
14
- //# sourceMappingURL=equipment.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"equipment.d.ts","sourceRoot":"","sources":["../../src/repository/equipment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,MAAM,EACX,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EAEzB,MAAM,eAAe,CAAC;AAKvB,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErD,qBAAa,mBAAoB,SAAQ,cAAc,CACrD,eAAe,EACf,mBAAmB,EACnB,sBAAsB,CACvB;IACC,SAAS,CAAC,QAAQ,CAAC,cAAc,SAAyB;IAC1D,SAAS,CAAC,QAAQ,CAAC,UAAU,eAAe;IAC5C,SAAS,CAAC,QAAQ,CAAC,aAAa,gGAA0B;IAC1D,SAAS,CAAC,QAAQ,CAAC,gBAAgB,mGAA6B;gBAEpD,EAAE,EAAE,SAAS;IAIzB,SAAS,CAAC,KAAK,CACb,IAAI,EAAE,mBAAmB,EACzB,OAAO,EAAE,sBAAsB,GAC9B,eAAe;IAIlB,SAAS,CAAC,KAAK,CACb,SAAS,EAAE,eAAe,GACzB,WAAW,CAAC,mBAAmB,EAAE,sBAAsB,CAAC;IA4BrD,aAAa,CACjB,QAAQ,EAAE,iBAAiB,EAC3B,MAAM,EAAE,MAAM,EACd,KAAK,SAAK,EACV,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,GAAE,mBAA+B,GACzC,OAAO,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;CAUnD"}
@@ -1,40 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EquipmentRepository = void 0;
4
- const core_1 = require("@cravery/core");
5
- const converter_1 = require("../converter");
6
- const base_1 = require("./base");
7
- class EquipmentRepository extends base_1.BaseRepository {
8
- constructor(db) {
9
- super(db);
10
- this.collectionName = core_1.COLLECTIONS.Equipment;
11
- this.entityName = "Equipment";
12
- this.metaConverter = converter_1.equipmentMetaConverter;
13
- this.contentConverter = converter_1.equipmentContentConverter;
14
- }
15
- merge(meta, content) {
16
- return Object.assign(Object.assign({}, meta), content);
17
- }
18
- split(equipment) {
19
- const { id: _id, createdAt, updatedAt, deletedAt, status, category, price, name, imageUrl, slug, } = equipment;
20
- return {
21
- meta: {
22
- category,
23
- imageUrl,
24
- slug,
25
- price,
26
- status,
27
- createdAt,
28
- updatedAt,
29
- deletedAt,
30
- },
31
- content: { name, slug },
32
- };
33
- }
34
- async getByCategory(category, locale, limit = 20, cursor, direction = "forward") {
35
- const baseQuery = this.metaCollection.where("category", "==", category);
36
- return this.executeSimplePaginatedQuery(baseQuery, locale, limit, cursor, direction);
37
- }
38
- }
39
- exports.EquipmentRepository = EquipmentRepository;
40
- //# sourceMappingURL=equipment.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"equipment.js","sourceRoot":"","sources":["../../src/repository/equipment.ts"],"names":[],"mappings":";;;AACA,wCASuB;AACvB,4CAGsB;AACtB,iCAAqD;AAErD,MAAa,mBAAoB,SAAQ,qBAIxC;IAMC,YAAY,EAAa;QACvB,KAAK,CAAC,EAAE,CAAC,CAAC;QANO,mBAAc,GAAG,kBAAW,CAAC,SAAS,CAAC;QACvC,eAAU,GAAG,WAAW,CAAC;QACzB,kBAAa,GAAG,kCAAsB,CAAC;QACvC,qBAAgB,GAAG,qCAAyB,CAAC;IAIhE,CAAC;IAES,KAAK,CACb,IAAyB,EACzB,OAA+B;QAE/B,uCAAY,IAAI,GAAK,OAAO,EAAG;IACjC,CAAC;IAES,KAAK,CACb,SAA0B;QAE1B,MAAM,EACJ,EAAE,EAAE,GAAG,EACP,SAAS,EACT,SAAS,EACT,SAAS,EACT,MAAM,EACN,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,IAAI,GACL,GAAG,SAAS,CAAC;QACd,OAAO;YACL,IAAI,EAAE;gBACJ,QAAQ;gBACR,QAAQ;gBACR,IAAI;gBACJ,KAAK;gBACL,MAAM;gBACN,SAAS;gBACT,SAAS;gBACT,SAAS;aACV;YACD,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;SACxB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,QAA2B,EAC3B,MAAc,EACd,KAAK,GAAG,EAAE,EACV,MAAe,EACf,YAAiC,SAAS;QAE1C,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,2BAA2B,CACrC,SAAS,EACT,MAAM,EACN,KAAK,EACL,MAAM,EACN,SAAS,CACV,CAAC;IACJ,CAAC;CACF;AAnED,kDAmEC"}
@@ -1,8 +0,0 @@
1
- export * from "./base";
2
- export * from "./equipment";
3
- export * from "./ingredient";
4
- export * from "./recipe_stats";
5
- export * from "./recipe";
6
- export * from "./report";
7
- export * from "./user_recipe";
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/repository/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/repository/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,8CAA4B;AAC5B,+CAA6B;AAC7B,iDAA+B;AAC/B,2CAAyB;AACzB,2CAAyB;AACzB,gDAA8B"}
@@ -1,15 +0,0 @@
1
- import { Firestore } from "firebase-admin/firestore";
2
- import { type IngredientEntity, type IngredientEntityMeta, type IngredientEntityContent, type IngredientCategory, type IngredientGroup, type Locale, type CursorPaginatedResult, type PaginationDirection } from "@cravery/core";
3
- import { BaseRepository, SplitResult } from "./base";
4
- export declare class IngredientRepository extends BaseRepository<IngredientEntity, IngredientEntityMeta, IngredientEntityContent> {
5
- protected readonly collectionName: string;
6
- protected readonly entityName = "Ingredient";
7
- protected readonly metaConverter: FirebaseFirestore.FirestoreDataConverter<IngredientEntityMeta, FirebaseFirestore.DocumentData>;
8
- protected readonly contentConverter: FirebaseFirestore.FirestoreDataConverter<IngredientEntityContent, FirebaseFirestore.DocumentData>;
9
- constructor(db: Firestore);
10
- protected merge(meta: IngredientEntityMeta, content: IngredientEntityContent): IngredientEntity;
11
- protected split(ingredient: IngredientEntity): SplitResult<IngredientEntityMeta, IngredientEntityContent>;
12
- getByCategory(category: IngredientCategory, locale: Locale, limit?: number, cursor?: string, direction?: PaginationDirection): Promise<CursorPaginatedResult<IngredientEntity>>;
13
- getByGroup(group: IngredientGroup, locale: Locale, limit?: number, cursor?: string, direction?: PaginationDirection): Promise<CursorPaginatedResult<IngredientEntity>>;
14
- }
15
- //# sourceMappingURL=ingredient.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ingredient.d.ts","sourceRoot":"","sources":["../../src/repository/ingredient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EAEzB,MAAM,eAAe,CAAC;AAKvB,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErD,qBAAa,oBAAqB,SAAQ,cAAc,CACtD,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,CACxB;IACC,SAAS,CAAC,QAAQ,CAAC,cAAc,SAA2B;IAC5D,SAAS,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC7C,SAAS,CAAC,QAAQ,CAAC,aAAa,iGAA2B;IAC3D,SAAS,CAAC,QAAQ,CAAC,gBAAgB,oGAA8B;gBAErD,EAAE,EAAE,SAAS;IAIzB,SAAS,CAAC,KAAK,CACb,IAAI,EAAE,oBAAoB,EAC1B,OAAO,EAAE,uBAAuB,GAC/B,gBAAgB;IAInB,SAAS,CAAC,KAAK,CACb,UAAU,EAAE,gBAAgB,GAC3B,WAAW,CAAC,oBAAoB,EAAE,uBAAuB,CAAC;IAgCvD,aAAa,CACjB,QAAQ,EAAE,kBAAkB,EAC5B,MAAM,EAAE,MAAM,EACd,KAAK,SAAK,EACV,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,GAAE,mBAA+B,GACzC,OAAO,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IAW7C,UAAU,CACd,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,MAAM,EACd,KAAK,SAAK,EACV,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,GAAE,mBAA+B,GACzC,OAAO,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;CAUpD"}
@@ -1,46 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IngredientRepository = void 0;
4
- const core_1 = require("@cravery/core");
5
- const converter_1 = require("../converter");
6
- const base_1 = require("./base");
7
- class IngredientRepository extends base_1.BaseRepository {
8
- constructor(db) {
9
- super(db);
10
- this.collectionName = core_1.COLLECTIONS.Ingredients;
11
- this.entityName = "Ingredient";
12
- this.metaConverter = converter_1.ingredientMetaConverter;
13
- this.contentConverter = converter_1.ingredientContentConverter;
14
- }
15
- merge(meta, content) {
16
- return Object.assign(Object.assign({}, meta), content);
17
- }
18
- split(ingredient) {
19
- const { id: _id, createdAt, updatedAt, deletedAt, status, category, group, imageUrl, price, standardUnit, name, slug, } = ingredient;
20
- return {
21
- meta: {
22
- category,
23
- group,
24
- imageUrl,
25
- price,
26
- slug,
27
- standardUnit,
28
- status,
29
- createdAt,
30
- updatedAt,
31
- deletedAt,
32
- },
33
- content: { name, slug },
34
- };
35
- }
36
- async getByCategory(category, locale, limit = 20, cursor, direction = "forward") {
37
- const baseQuery = this.metaCollection.where("category", "==", category);
38
- return this.executeSimplePaginatedQuery(baseQuery, locale, limit, cursor, direction);
39
- }
40
- async getByGroup(group, locale, limit = 20, cursor, direction = "forward") {
41
- const baseQuery = this.metaCollection.where("group", "==", group);
42
- return this.executeSimplePaginatedQuery(baseQuery, locale, limit, cursor, direction);
43
- }
44
- }
45
- exports.IngredientRepository = IngredientRepository;
46
- //# sourceMappingURL=ingredient.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ingredient.js","sourceRoot":"","sources":["../../src/repository/ingredient.ts"],"names":[],"mappings":";;;AACA,wCAUuB;AACvB,4CAGsB;AACtB,iCAAqD;AAErD,MAAa,oBAAqB,SAAQ,qBAIzC;IAMC,YAAY,EAAa;QACvB,KAAK,CAAC,EAAE,CAAC,CAAC;QANO,mBAAc,GAAG,kBAAW,CAAC,WAAW,CAAC;QACzC,eAAU,GAAG,YAAY,CAAC;QAC1B,kBAAa,GAAG,mCAAuB,CAAC;QACxC,qBAAgB,GAAG,sCAA0B,CAAC;IAIjE,CAAC;IAES,KAAK,CACb,IAA0B,EAC1B,OAAgC;QAEhC,uCAAY,IAAI,GAAK,OAAO,EAAG;IACjC,CAAC;IAES,KAAK,CACb,UAA4B;QAE5B,MAAM,EACJ,EAAE,EAAE,GAAG,EACP,SAAS,EACT,SAAS,EACT,SAAS,EACT,MAAM,EACN,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,IAAI,EACJ,IAAI,GACL,GAAG,UAAU,CAAC;QACf,OAAO;YACL,IAAI,EAAE;gBACJ,QAAQ;gBACR,KAAK;gBACL,QAAQ;gBACR,KAAK;gBACL,IAAI;gBACJ,YAAY;gBACZ,MAAM;gBACN,SAAS;gBACT,SAAS;gBACT,SAAS;aACV;YACD,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;SACxB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,QAA4B,EAC5B,MAAc,EACd,KAAK,GAAG,EAAE,EACV,MAAe,EACf,YAAiC,SAAS;QAE1C,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,2BAA2B,CACrC,SAAS,EACT,MAAM,EACN,KAAK,EACL,MAAM,EACN,SAAS,CACV,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CACd,KAAsB,EACtB,MAAc,EACd,KAAK,GAAG,EAAE,EACV,MAAe,EACf,YAAiC,SAAS;QAE1C,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC,2BAA2B,CACrC,SAAS,EACT,MAAM,EACN,KAAK,EACL,MAAM,EACN,SAAS,CACV,CAAC;IACJ,CAAC;CACF;AAxFD,oDAwFC"}
@@ -1,17 +0,0 @@
1
- import { Firestore } from "firebase-admin/firestore";
2
- import { type Recipe, type RecipeMeta, type RecipeContent, type Locale, type CursorPaginatedResult, type PaginationDirection, EntityStatus } from "@cravery/core";
3
- import { BaseRepository, SplitResult } from "./base";
4
- export declare class RecipeRepository extends BaseRepository<Recipe, RecipeMeta, RecipeContent> {
5
- protected readonly collectionName: string;
6
- protected readonly entityName = "Recipe";
7
- protected readonly metaConverter: FirebaseFirestore.FirestoreDataConverter<RecipeMeta, FirebaseFirestore.DocumentData>;
8
- protected readonly contentConverter: FirebaseFirestore.FirestoreDataConverter<RecipeContent, FirebaseFirestore.DocumentData>;
9
- constructor(db: Firestore);
10
- protected merge(meta: RecipeMeta, content: RecipeContent): Recipe;
11
- protected split(recipe: Recipe): SplitResult<RecipeMeta, RecipeContent>;
12
- updateMeta(recipeId: string, updates: Partial<Omit<RecipeMeta, "id" | "createdAt" | "createdBy">>): Promise<void>;
13
- updateContent(recipeId: string, locale: Locale, content: Partial<RecipeContent>): Promise<void>;
14
- getByStatus(statuses: EntityStatus[], locale: Locale, limit?: number, cursor?: string, direction?: PaginationDirection): Promise<CursorPaginatedResult<Recipe>>;
15
- findBySourceUrl(sourceUrl: string, locale: Locale): Promise<Recipe | null>;
16
- }
17
- //# sourceMappingURL=recipe.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"recipe.d.ts","sourceRoot":"","sources":["../../src/repository/recipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,EAAa,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EACL,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EAExB,YAAY,EACb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAKrD,qBAAa,gBAAiB,SAAQ,cAAc,CAClD,MAAM,EACN,UAAU,EACV,aAAa,CACd;IACC,SAAS,CAAC,QAAQ,CAAC,cAAc,SAAuB;IACxD,SAAS,CAAC,QAAQ,CAAC,UAAU,YAAY;IACzC,SAAS,CAAC,QAAQ,CAAC,aAAa,uFAAuB;IACvD,SAAS,CAAC,QAAQ,CAAC,gBAAgB,0FAA0B;gBAEjD,EAAE,EAAE,SAAS;IAIzB,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM;IAIjE,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAC,UAAU,EAAE,aAAa,CAAC;IAIxD,UAAU,CACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,CAAC,CAAC,GACnE,OAAO,CAAC,IAAI,CAAC;IAOD,aAAa,CAC1B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC;IAYV,WAAW,CACf,QAAQ,EAAE,YAAY,EAAE,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,SAAK,EACV,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,GAAE,mBAA+B,GACzC,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAiDnC,eAAe,CACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CA0B1B"}