@hedhog/admin 0.0.109 → 0.0.111

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 (74) hide show
  1. package/dist/admin.module.d.ts.map +1 -1
  2. package/dist/admin.module.js +0 -3
  3. package/dist/admin.module.js.map +1 -1
  4. package/dist/auth/auth.controller.d.ts.map +1 -1
  5. package/dist/auth/auth.controller.js +1 -2
  6. package/dist/auth/auth.controller.js.map +1 -1
  7. package/dist/index.d.ts +0 -2
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +0 -3
  10. package/dist/index.js.map +1 -1
  11. package/dist/menu/menu.controller.d.ts.map +1 -1
  12. package/dist/menu/menu.controller.js +1 -2
  13. package/dist/menu/menu.controller.js.map +1 -1
  14. package/dist/role/dto/create.dto.d.ts +1 -1
  15. package/dist/role/dto/create.dto.d.ts.map +1 -1
  16. package/dist/role/dto/create.dto.js +2 -2
  17. package/dist/role/dto/create.dto.js.map +1 -1
  18. package/hedhog.yaml +48 -307
  19. package/package.json +3 -3
  20. package/src/admin.module.ts +0 -3
  21. package/src/auth/auth.controller.ts +1 -2
  22. package/src/index.ts +0 -4
  23. package/src/menu/menu.controller.ts +1 -2
  24. package/src/role/dto/create.dto.ts +1 -1
  25. package/dist/auth/decorators/user.decorator.d.ts +0 -2
  26. package/dist/auth/decorators/user.decorator.d.ts.map +0 -1
  27. package/dist/auth/decorators/user.decorator.js +0 -12
  28. package/dist/auth/decorators/user.decorator.js.map +0 -1
  29. package/dist/dto/with-locale.dto.d.ts +0 -4
  30. package/dist/dto/with-locale.dto.d.ts.map +0 -1
  31. package/dist/dto/with-locale.dto.js +0 -23
  32. package/dist/dto/with-locale.dto.js.map +0 -1
  33. package/dist/setting/dto/create.dto.d.ts +0 -3
  34. package/dist/setting/dto/create.dto.d.ts.map +0 -1
  35. package/dist/setting/dto/create.dto.js +0 -7
  36. package/dist/setting/dto/create.dto.js.map +0 -1
  37. package/dist/setting/dto/setting-user.dto.d.ts +0 -4
  38. package/dist/setting/dto/setting-user.dto.d.ts.map +0 -1
  39. package/dist/setting/dto/setting-user.dto.js +0 -21
  40. package/dist/setting/dto/setting-user.dto.js.map +0 -1
  41. package/dist/setting/dto/setting.dto.d.ts +0 -9
  42. package/dist/setting/dto/setting.dto.d.ts.map +0 -1
  43. package/dist/setting/dto/setting.dto.js +0 -34
  44. package/dist/setting/dto/setting.dto.js.map +0 -1
  45. package/dist/setting/dto/update.dto.d.ts +0 -4
  46. package/dist/setting/dto/update.dto.d.ts.map +0 -1
  47. package/dist/setting/dto/update.dto.js +0 -8
  48. package/dist/setting/dto/update.dto.js.map +0 -1
  49. package/dist/setting/setting.controller.d.ts +0 -26
  50. package/dist/setting/setting.controller.d.ts.map +0 -1
  51. package/dist/setting/setting.controller.js +0 -161
  52. package/dist/setting/setting.controller.js.map +0 -1
  53. package/dist/setting/setting.module.d.ts +0 -3
  54. package/dist/setting/setting.module.d.ts.map +0 -1
  55. package/dist/setting/setting.module.js +0 -33
  56. package/dist/setting/setting.module.js.map +0 -1
  57. package/dist/setting/setting.service.d.ts +0 -33
  58. package/dist/setting/setting.service.d.ts.map +0 -1
  59. package/dist/setting/setting.service.js +0 -377
  60. package/dist/setting/setting.service.js.map +0 -1
  61. package/dist/setting/setting.service.spec.d.ts +0 -2
  62. package/dist/setting/setting.service.spec.d.ts.map +0 -1
  63. package/dist/setting/setting.service.spec.js +0 -162
  64. package/dist/setting/setting.service.spec.js.map +0 -1
  65. package/src/auth/decorators/user.decorator.ts +0 -17
  66. package/src/dto/with-locale.dto.ts +0 -8
  67. package/src/setting/dto/create.dto.ts +0 -1
  68. package/src/setting/dto/setting-user.dto.ts +0 -6
  69. package/src/setting/dto/setting.dto.ts +0 -17
  70. package/src/setting/dto/update.dto.ts +0 -3
  71. package/src/setting/setting.controller.ts +0 -107
  72. package/src/setting/setting.module.ts +0 -20
  73. package/src/setting/setting.service.spec.ts +0 -183
  74. package/src/setting/setting.service.ts +0 -457
@@ -1,457 +0,0 @@
1
- import { FileService } from '@hedhog/file';
2
- import { PaginationDTO, PaginationService } from '@hedhog/pagination';
3
- import { PrismaService } from '@hedhog/prisma';
4
- import { itemTranslations } from '@hedhog/utils';
5
- import {
6
- BadRequestException,
7
- Inject,
8
- Injectable,
9
- forwardRef,
10
- } from '@nestjs/common';
11
- import { Response } from 'express';
12
- import { DeleteDTO } from '../dto/delete.dto';
13
- import { CreateDTO } from './dto/create.dto';
14
- import { SettingDTO } from './dto/setting.dto';
15
- import { UpdateDTO } from './dto/update.dto';
16
-
17
- @Injectable()
18
- export class SettingService {
19
- constructor(
20
- @Inject(forwardRef(() => PrismaService))
21
- private readonly prismaService: PrismaService,
22
- @Inject(forwardRef(() => PaginationService))
23
- private readonly paginationService: PaginationService,
24
- @Inject(forwardRef(() => FileService))
25
- private readonly fileService: FileService,
26
- ) {}
27
-
28
- async getAppearanceCSS(res: Response) {
29
- const fileCSS = await this.fileService.readStream(`appearance/theme.css`);
30
-
31
- res.setHeader('Content-Type', 'text/css');
32
-
33
- return fileCSS.pipe(res);
34
- }
35
-
36
- async updateAppearanceSettings() {
37
- console.log({ updateAppearanceSettings: 'updateAppearanceSettings' });
38
-
39
- const settings = await this.prismaService.setting.findMany({
40
- where: {
41
- setting_group: {
42
- slug: 'appearance',
43
- },
44
- },
45
- });
46
-
47
- await this.fileService.uploadFromString(
48
- 'appearance',
49
- 'theme.css',
50
- `
51
- @layer base {
52
- :root {
53
- --background: 0 0% 100%;
54
- --foreground: 20 14.3% 4.1%;
55
- --card: 0 0% 100%;
56
- --card-foreground: 20 14.3% 4.1%;
57
- --popover: 0 0% 100%;
58
- --popover-foreground: 20 14.3% 4.1%;
59
- --primary: 24.6 95% 53.1%;
60
- --primary-foreground: 60 9.1% 97.8%;
61
- --secondary: 60 4.8% 95.9%;
62
- --secondary-foreground: 24 9.8% 10%;
63
- --muted: 60 4.8% 95.9%;
64
- --muted-foreground: 25 5.3% 44.7%;
65
- --accent: 60 4.8% 95.9%;
66
- --accent-foreground: 24 9.8% 10%;
67
- --destructive: 0 84.2% 60.2%;
68
- --destructive-foreground: 60 9.1% 97.8%;
69
- --border: 20 5.9% 90%;
70
- --input: 20 5.9% 90%;
71
- --ring: 24.6 95% 53.1%;
72
- --radius: 0.5rem;
73
- --chart-1: 12 76% 61%;
74
- --chart-2: 173 58% 39%;
75
- --chart-3: 197 37% 24%;
76
- --chart-4: 43 74% 66%;
77
- --chart-5: 27 87% 67%;
78
- }
79
-
80
- .dark {
81
- --background: 20 14.3% 4.1%;
82
- --foreground: 60 9.1% 97.8%;
83
- --card: 20 14.3% 4.1%;
84
- --card-foreground: 60 9.1% 97.8%;
85
- --popover: 20 14.3% 4.1%;
86
- --popover-foreground: 60 9.1% 97.8%;
87
- --primary: 20.5 90.2% 48.2%;
88
- --primary-foreground: 60 9.1% 97.8%;
89
- --secondary: 12 6.5% 15.1%;
90
- --secondary-foreground: 60 9.1% 97.8%;
91
- --muted: 12 6.5% 15.1%;
92
- --muted-foreground: 24 5.4% 63.9%;
93
- --accent: 12 6.5% 15.1%;
94
- --accent-foreground: 60 9.1% 97.8%;
95
- --destructive: 0 72.2% 50.6%;
96
- --destructive-foreground: 60 9.1% 97.8%;
97
- --border: 12 6.5% 15.1%;
98
- --input: 12 6.5% 15.1%;
99
- --ring: 20.5 90.2% 48.2%;
100
- --chart-1: 220 70% 50%;
101
- --chart-2: 160 60% 45%;
102
- --chart-3: 30 80% 55%;
103
- --chart-4: 280 65% 60%;
104
- --chart-5: 340 75% 55%;
105
- }
106
- }
107
- `,
108
- 'text/css',
109
- );
110
-
111
- console.log({ settings });
112
- }
113
-
114
- async setManySettings(data: SettingDTO) {
115
- const transaction = [];
116
-
117
- for (const { slug, value } of data.setting) {
118
- transaction.push(
119
- this.prismaService.setting.updateMany({
120
- where: {
121
- slug,
122
- },
123
- data: {
124
- value,
125
- },
126
- }),
127
- );
128
- }
129
-
130
- await this.prismaService.$transaction(transaction);
131
-
132
- const hasAppearance = await this.prismaService.setting.count({
133
- where: {
134
- slug: {
135
- in: data.setting.map((setting) => setting.slug),
136
- },
137
- setting_group: {
138
- slug: 'appearance',
139
- },
140
- },
141
- });
142
-
143
- if (hasAppearance) {
144
- await this.updateAppearanceSettings();
145
- }
146
-
147
- return { success: true };
148
- }
149
-
150
- async getSettingFromGroup(locale: any, paginationParams: any, slug: string) {
151
- const fields = ['slug', 'value'];
152
-
153
- paginationParams.pageSize = 100;
154
-
155
- const OR: any[] = this.prismaService.createInsensitiveSearch(
156
- fields,
157
- paginationParams,
158
- );
159
-
160
- const result = await this.paginationService.paginate(
161
- this.prismaService.setting,
162
- paginationParams,
163
- {
164
- where: {
165
- AND: {
166
- setting_group: {
167
- slug,
168
- },
169
- OR,
170
- },
171
- },
172
- include: {
173
- setting_group: {
174
- include: {
175
- setting_group_locale: {
176
- where: {
177
- locale: {
178
- code: locale,
179
- },
180
- },
181
- select: {
182
- name: true,
183
- description: true,
184
- },
185
- },
186
- },
187
- },
188
- setting_locale: {
189
- where: {
190
- locale: {
191
- code: locale,
192
- },
193
- },
194
- select: {
195
- name: true,
196
- description: true,
197
- },
198
- },
199
- },
200
- },
201
- 'setting_locale',
202
- );
203
-
204
- result.data = result.data.map((setting: any) => {
205
- setting.setting_group = itemTranslations(
206
- 'setting_group_locale',
207
- setting.setting_group,
208
- );
209
- return setting;
210
- });
211
-
212
- return result;
213
- }
214
-
215
- async listSettingGroups(locale: string, paginationParams: PaginationDTO) {
216
- const fields = ['slug', 'icon'];
217
-
218
- paginationParams.pageSize = 100;
219
-
220
- const OR: any[] = this.prismaService.createInsensitiveSearch(
221
- fields,
222
- paginationParams,
223
- );
224
-
225
- const result = await this.paginationService.paginate(
226
- this.prismaService.setting_group,
227
- paginationParams,
228
- {
229
- where: {
230
- OR,
231
- },
232
- include: {
233
- setting_group_locale: {
234
- where: {
235
- locale: {
236
- code: locale,
237
- },
238
- },
239
- select: {
240
- name: true,
241
- description: true,
242
- },
243
- },
244
- },
245
- },
246
- 'setting_group_locale',
247
- );
248
-
249
- return result;
250
- }
251
-
252
- async listSettings(locale: string, paginationParams: PaginationDTO) {
253
- const fields = ['slug', 'value'];
254
-
255
- const OR: any[] = this.prismaService.createInsensitiveSearch(
256
- fields,
257
- paginationParams,
258
- );
259
-
260
- const result = await this.paginationService.paginate(
261
- this.prismaService.setting,
262
- paginationParams,
263
- {
264
- where: {
265
- OR,
266
- },
267
- include: {
268
- setting_group: {
269
- include: {
270
- setting_group_locale: {
271
- where: {
272
- locale: {
273
- code: locale,
274
- },
275
- },
276
- select: {
277
- name: true,
278
- description: true,
279
- },
280
- },
281
- },
282
- },
283
- setting_locale: {
284
- where: {
285
- locale: {
286
- code: locale,
287
- },
288
- },
289
- select: {
290
- name: true,
291
- description: true,
292
- },
293
- },
294
- },
295
- },
296
- 'setting_locale',
297
- );
298
-
299
- result.data = result.data.map((setting: any) => {
300
- setting.setting_group = itemTranslations(
301
- 'setting_group_locale',
302
- setting.setting_group,
303
- );
304
- return setting;
305
- });
306
-
307
- return result;
308
- }
309
-
310
- async get(settingId: number) {
311
- return this.prismaService.setting.findUnique({
312
- where: { id: settingId },
313
- });
314
- }
315
-
316
- async create({}: CreateDTO) {
317
- return this.prismaService.setting.create({
318
- data: {},
319
- });
320
- }
321
-
322
- async update({ id, data }: { id: number; data: UpdateDTO }) {
323
- return this.prismaService.setting.update({
324
- where: { id },
325
- data,
326
- });
327
- }
328
-
329
- async updateFromSlug(slug: string, data: UpdateDTO) {
330
- const { id } = await this.prismaService.setting.findFirst({
331
- where: {
332
- slug,
333
- },
334
- });
335
-
336
- if (!id) {
337
- throw new BadRequestException(`Setting with slug ${slug} not found.`);
338
- }
339
-
340
- return this.update({
341
- id,
342
- data,
343
- });
344
- }
345
-
346
- async delete({ ids }: DeleteDTO) {
347
- if (ids == undefined || ids == null) {
348
- throw new BadRequestException(
349
- `You must select at least one setting to delete.`,
350
- );
351
- }
352
-
353
- return this.prismaService.setting.deleteMany({
354
- where: {
355
- id: {
356
- in: ids,
357
- },
358
- },
359
- });
360
- }
361
-
362
- async setSettingUserValue(user_id: number, slug: string, value: string) {
363
- const user = await this.prismaService.user.findUnique({
364
- where: {
365
- id: user_id,
366
- },
367
- select: {
368
- id: true,
369
- },
370
- });
371
-
372
- if (!user) {
373
- throw new BadRequestException(`User with id ${user_id} not found.`);
374
- }
375
-
376
- const setting = await this.prismaService.setting.findFirst({
377
- where: {
378
- slug,
379
- user_override: true,
380
- },
381
- });
382
-
383
- if (!setting) {
384
- throw new BadRequestException(
385
- `Setting with slug ${slug} not found or user can not override.`,
386
- );
387
- }
388
-
389
- return await this.prismaService.setting_user.upsert({
390
- where: {
391
- user_id_setting_id: {
392
- setting_id: setting.id,
393
- user_id: user.id,
394
- },
395
- },
396
- create: {
397
- setting_id: setting.id,
398
- value,
399
- user_id: user.id,
400
- },
401
- update: {
402
- value,
403
- },
404
- select: {
405
- setting_id: true,
406
- user_id: true,
407
- value: true,
408
- },
409
- });
410
- }
411
-
412
- async getSettingValues(slug: string | string[]) {
413
- slug = Array.isArray(slug) ? slug : [slug];
414
-
415
- let setting = await this.prismaService.setting.findMany({
416
- where: {
417
- slug: {
418
- in: slug,
419
- },
420
- },
421
- select: {
422
- id: true,
423
- value: true,
424
- slug: true,
425
- type: true,
426
- user_override: true,
427
- },
428
- });
429
-
430
- const slugUserOverride = setting.filter((setting) => setting.userOverride);
431
-
432
- const settingUser = await this.prismaService.setting_user.findMany({
433
- where: {
434
- setting_id: {
435
- in: slugUserOverride.map((setting) => setting.id),
436
- },
437
- },
438
- select: {
439
- value: true,
440
- setting_id: true,
441
- },
442
- });
443
-
444
- const data: Record<string, any> = {};
445
-
446
- setting.forEach((setting) => {
447
- data[setting.slug] = setting.value;
448
- });
449
-
450
- settingUser.forEach((setting) => {
451
- data[slugUserOverride.find((s) => s.id === setting.setting_id).slug] =
452
- setting.value;
453
- });
454
-
455
- return data;
456
- }
457
- }