@hed-hog/faq 0.0.2 → 0.0.4

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.
@@ -1,5 +1,7 @@
1
1
  export declare class FAQDTO {
2
- question: string;
3
- answer: string;
2
+ locale: Record<string, {
3
+ question: string;
4
+ answer: string;
5
+ }>;
4
6
  }
5
7
  //# sourceMappingURL=faq.dto.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"faq.dto.d.ts","sourceRoot":"","sources":["../../src/dto/faq.dto.ts"],"names":[],"mappings":"AAEA,qBAAa,MAAM;IAGf,QAAQ,EAAE,MAAM,CAAC;IAIjB,MAAM,EAAE,MAAM,CAAC;CAClB"}
1
+ {"version":3,"file":"faq.dto.d.ts","sourceRoot":"","sources":["../../src/dto/faq.dto.ts"],"names":[],"mappings":"AAEA,qBAAa,MAAM;IAGf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChE"}
@@ -15,13 +15,8 @@ class FAQDTO {
15
15
  }
16
16
  exports.FAQDTO = FAQDTO;
17
17
  __decorate([
18
- (0, class_validator_1.IsString)(),
18
+ (0, class_validator_1.IsObject)(),
19
19
  (0, class_validator_1.IsNotEmpty)(),
20
- __metadata("design:type", String)
21
- ], FAQDTO.prototype, "question", void 0);
22
- __decorate([
23
- (0, class_validator_1.IsString)(),
24
- (0, class_validator_1.IsNotEmpty)(),
25
- __metadata("design:type", String)
26
- ], FAQDTO.prototype, "answer", void 0);
20
+ __metadata("design:type", Object)
21
+ ], FAQDTO.prototype, "locale", void 0);
27
22
  //# sourceMappingURL=faq.dto.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"faq.dto.js","sourceRoot":"","sources":["../../src/dto/faq.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAuD;AAEvD,MAAa,MAAM;CAQlB;AARD,wBAQC;AALG;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;wCACI;AAIjB;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;sCACE"}
1
+ {"version":3,"file":"faq.dto.js","sourceRoot":"","sources":["../../src/dto/faq.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAuD;AAEvD,MAAa,MAAM;CAIlB;AAJD,wBAIC;AADG;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;sCACgD"}
@@ -5,7 +5,7 @@ export declare class FAQController {
5
5
  constructor(faqService: FAQService);
6
6
  list(paginationParams: any, locale: string): Promise<{
7
7
  data: any[];
8
- total: any;
8
+ total: number;
9
9
  page: number;
10
10
  pageSize: any;
11
11
  prev: number;
@@ -13,14 +13,11 @@ export declare class FAQController {
13
13
  lastPage: number;
14
14
  }>;
15
15
  getFAQStats(): Promise<{
16
- total: any;
17
- }>;
18
- getById(id: number, locale: string): Promise<any>;
19
- create(body: FAQDTO, locale: string): Promise<any>;
20
- update(id: number, body: Partial<FAQDTO>, locale: string): Promise<{
21
- updated: any;
22
- message: string;
16
+ total: number;
23
17
  }>;
18
+ getById(id: number): Promise<any>;
19
+ create(body: FAQDTO): Promise<any>;
20
+ update(id: number, body: Partial<FAQDTO>): Promise<any>;
24
21
  delete(id: number): Promise<{
25
22
  deleted: boolean;
26
23
  message: string;
@@ -1 +1 @@
1
- {"version":3,"file":"faq.controller.d.ts","sourceRoot":"","sources":["../src/faq.controller.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,qBACa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAG7C,IAAI,CACM,gBAAgB,KAAA,EACpB,MAAM,EAAE,MAAM;;;;;;;;;IAMpB,WAAW;;;IAKX,OAAO,CACgB,EAAE,EAAE,MAAM,EAC3B,MAAM,EAAE,MAAM;IAYpB,MAAM,CACF,IAAI,EAAE,MAAM,EACV,MAAM,EAAE,MAAM;IAMpB,MAAM,CACiB,EAAE,EAAE,MAAM,EAC7B,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EACnB,MAAM,EAAE,MAAM;;;;IAMpB,MAAM,CAA4B,EAAE,EAAE,MAAM;;;;CAGnD"}
1
+ {"version":3,"file":"faq.controller.d.ts","sourceRoot":"","sources":["../src/faq.controller.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,qBACa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAG7C,IAAI,CACM,gBAAgB,KAAA,EACpB,MAAM,EAAE,MAAM;;;;;;;;;IAMpB,WAAW;;;IAKX,OAAO,CACgB,EAAE,EAAE,MAAM;IAYjC,MAAM,CACF,IAAI,EAAE,MAAM;IAMhB,MAAM,CACiB,EAAE,EAAE,MAAM,EAC7B,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC;IAMzB,MAAM,CAA4B,EAAE,EAAE,MAAM;;;;CAGnD"}
@@ -28,18 +28,18 @@ let FAQController = class FAQController {
28
28
  async getFAQStats() {
29
29
  return this.faqService.getStats();
30
30
  }
31
- async getById(id, locale) {
32
- const faq = await this.faqService.getById(id, locale);
31
+ async getById(id) {
32
+ const faq = await this.faqService.getById(id);
33
33
  if (!faq) {
34
34
  throw new common_1.NotFoundException('FAQ not found');
35
35
  }
36
36
  return faq;
37
37
  }
38
- async create(body, locale) {
39
- return this.faqService.create(body, locale);
38
+ async create(body) {
39
+ return this.faqService.create(body);
40
40
  }
41
- async update(id, body, locale) {
42
- return this.faqService.update(id, body, locale);
41
+ async update(id, body) {
42
+ return this.faqService.update(id, body);
43
43
  }
44
44
  async delete(id) {
45
45
  return this.faqService.delete(id);
@@ -63,26 +63,23 @@ __decorate([
63
63
  __decorate([
64
64
  (0, common_1.Get)(':id'),
65
65
  __param(0, (0, common_1.Param)('id', common_1.ParseIntPipe)),
66
- __param(1, (0, api_locale_1.Locale)()),
67
66
  __metadata("design:type", Function),
68
- __metadata("design:paramtypes", [Number, String]),
67
+ __metadata("design:paramtypes", [Number]),
69
68
  __metadata("design:returntype", Promise)
70
69
  ], FAQController.prototype, "getById", null);
71
70
  __decorate([
72
71
  (0, common_1.Post)(),
73
72
  __param(0, (0, common_1.Body)()),
74
- __param(1, (0, api_locale_1.Locale)()),
75
73
  __metadata("design:type", Function),
76
- __metadata("design:paramtypes", [faq_dto_1.FAQDTO, String]),
74
+ __metadata("design:paramtypes", [faq_dto_1.FAQDTO]),
77
75
  __metadata("design:returntype", Promise)
78
76
  ], FAQController.prototype, "create", null);
79
77
  __decorate([
80
78
  (0, common_1.Patch)(':id'),
81
79
  __param(0, (0, common_1.Param)('id', common_1.ParseIntPipe)),
82
80
  __param(1, (0, common_1.Body)()),
83
- __param(2, (0, api_locale_1.Locale)()),
84
81
  __metadata("design:type", Function),
85
- __metadata("design:paramtypes", [Number, Object, String]),
82
+ __metadata("design:paramtypes", [Number, Object]),
86
83
  __metadata("design:returntype", Promise)
87
84
  ], FAQController.prototype, "update", null);
88
85
  __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"faq.controller.js","sourceRoot":"","sources":["../src/faq.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,oDAA6C;AAC7C,4DAAqD;AACrD,2CAUwB;AACxB,2CAAuC;AACvC,+CAA2C;AAGpC,IAAM,aAAa,GAAnB,MAAM,aAAa;IACxB,YAA6B,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAI,CAAC;IAGlD,AAAN,KAAK,CAAC,IAAI,CACM,gBAAgB,EACpB,MAAc;QAEzB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;IACtD,CAAC;IAGK,AAAN,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAA;IACnC,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO,CACgB,EAAU,EAC3B,MAAc;QAExB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAEtD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,0BAAiB,CAAC,eAAe,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAGK,AAAN,KAAK,CAAC,MAAM,CACF,IAAY,EACV,MAAc;QAExB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAC7C,CAAC;IAGK,AAAN,KAAK,CAAC,MAAM,CACiB,EAAU,EAC7B,IAAqB,EACnB,MAAc;QAExB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAGK,AAAN,KAAK,CAAC,MAAM,CAA4B,EAAU;QAChD,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;CACF,CAAA;AAnDY,sCAAa;AAIlB;IADL,IAAA,YAAG,GAAE;IAEH,WAAA,IAAA,2BAAU,GAAE,CAAA;IACZ,WAAA,IAAA,mBAAM,GAAE,CAAA;;;;yCAGV;AAGK;IADL,IAAA,YAAG,EAAC,OAAO,CAAC;;;;gDAGZ;AAGK;IADL,IAAA,YAAG,EAAC,KAAK,CAAC;IAER,WAAA,IAAA,cAAK,EAAC,IAAI,EAAE,qBAAY,CAAC,CAAA;IACzB,WAAA,IAAA,mBAAM,GAAE,CAAA;;;;4CASV;AAGK;IADL,IAAA,aAAI,GAAE;IAEJ,WAAA,IAAA,aAAI,GAAE,CAAA;IACN,WAAA,IAAA,mBAAM,GAAE,CAAA;;qCADK,gBAAM;;2CAIrB;AAGK;IADL,IAAA,cAAK,EAAC,KAAK,CAAC;IAEV,WAAA,IAAA,cAAK,EAAC,IAAI,EAAE,qBAAY,CAAC,CAAA;IACzB,WAAA,IAAA,aAAI,GAAE,CAAA;IACN,WAAA,IAAA,mBAAM,GAAE,CAAA;;;;2CAGV;AAGK;IADL,IAAA,eAAM,EAAC,KAAK,CAAC;IACA,WAAA,IAAA,cAAK,EAAC,IAAI,EAAE,qBAAY,CAAC,CAAA;;;;2CAEtC;wBAlDU,aAAa;IADzB,IAAA,mBAAU,EAAC,KAAK,CAAC;qCAEyB,wBAAU;GADxC,aAAa,CAmDzB"}
1
+ {"version":3,"file":"faq.controller.js","sourceRoot":"","sources":["../src/faq.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,oDAA6C;AAC7C,4DAAqD;AACrD,2CAUwB;AACxB,2CAAuC;AACvC,+CAA2C;AAGpC,IAAM,aAAa,GAAnB,MAAM,aAAa;IACxB,YAA6B,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAI,CAAC;IAGlD,AAAN,KAAK,CAAC,IAAI,CACM,gBAAgB,EACpB,MAAc;QAEzB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAA;IACtD,CAAC;IAGK,AAAN,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAA;IACnC,CAAC;IAGK,AAAN,KAAK,CAAC,OAAO,CACgB,EAAU;QAErC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAE9C,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,0BAAiB,CAAC,eAAe,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAGK,AAAN,KAAK,CAAC,MAAM,CACF,IAAY;QAEpB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACrC,CAAC;IAGK,AAAN,KAAK,CAAC,MAAM,CACiB,EAAU,EAC7B,IAAqB;QAE7B,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAGK,AAAN,KAAK,CAAC,MAAM,CAA4B,EAAU;QAChD,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;CACF,CAAA;AAhDY,sCAAa;AAIlB;IADL,IAAA,YAAG,GAAE;IAEH,WAAA,IAAA,2BAAU,GAAE,CAAA;IACZ,WAAA,IAAA,mBAAM,GAAE,CAAA;;;;yCAGV;AAGK;IADL,IAAA,YAAG,EAAC,OAAO,CAAC;;;;gDAGZ;AAGK;IADL,IAAA,YAAG,EAAC,KAAK,CAAC;IAER,WAAA,IAAA,cAAK,EAAC,IAAI,EAAE,qBAAY,CAAC,CAAA;;;;4CAS3B;AAGK;IADL,IAAA,aAAI,GAAE;IAEJ,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAO,gBAAM;;2CAGrB;AAGK;IADL,IAAA,cAAK,EAAC,KAAK,CAAC;IAEV,WAAA,IAAA,cAAK,EAAC,IAAI,EAAE,qBAAY,CAAC,CAAA;IACzB,WAAA,IAAA,aAAI,GAAE,CAAA;;;;2CAGR;AAGK;IADL,IAAA,eAAM,EAAC,KAAK,CAAC;IACA,WAAA,IAAA,cAAK,EAAC,IAAI,EAAE,qBAAY,CAAC,CAAA;;;;2CAEtC;wBA/CU,aAAa;IADzB,IAAA,mBAAU,EAAC,KAAK,CAAC;qCAEyB,wBAAU;GADxC,aAAa,CAgDzB"}
@@ -1,3 +1,3 @@
1
- export declare class FAQModule {
1
+ export declare class FaqModule {
2
2
  }
3
3
  //# sourceMappingURL=faq.module.d.ts.map
@@ -6,20 +6,20 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
7
  };
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.FAQModule = void 0;
9
+ exports.FaqModule = void 0;
10
10
  const api_locale_1 = require("@hed-hog/api-locale");
11
11
  const common_1 = require("@nestjs/common");
12
12
  const faq_controller_1 = require("./faq.controller");
13
13
  const faq_service_1 = require("./faq.service");
14
- let FAQModule = class FAQModule {
14
+ let FaqModule = class FaqModule {
15
15
  };
16
- exports.FAQModule = FAQModule;
17
- exports.FAQModule = FAQModule = __decorate([
16
+ exports.FaqModule = FaqModule;
17
+ exports.FaqModule = FaqModule = __decorate([
18
18
  (0, common_1.Module)({
19
19
  imports: [(0, common_1.forwardRef)(() => api_locale_1.LocaleModule)],
20
20
  controllers: [faq_controller_1.FAQController],
21
21
  providers: [faq_service_1.FAQService],
22
22
  exports: [(0, common_1.forwardRef)(() => faq_service_1.FAQService)],
23
23
  })
24
- ], FAQModule);
24
+ ], FaqModule);
25
25
  //# sourceMappingURL=faq.module.js.map
@@ -7,7 +7,7 @@ export declare class FAQService {
7
7
  constructor(prisma: PrismaService, localeService: LocaleService);
8
8
  list(paginationParams: any, locale: string): Promise<{
9
9
  data: any[];
10
- total: any;
10
+ total: number;
11
11
  page: number;
12
12
  pageSize: any;
13
13
  prev: number;
@@ -15,14 +15,11 @@ export declare class FAQService {
15
15
  lastPage: number;
16
16
  }>;
17
17
  getStats(): Promise<{
18
- total: any;
19
- }>;
20
- create(body: FAQDTO, locale: string): Promise<any>;
21
- getById(id: number, locale: string): Promise<any>;
22
- update(id: number, body: Partial<FAQDTO>, locale: string): Promise<{
23
- updated: any;
24
- message: string;
18
+ total: number;
25
19
  }>;
20
+ create(body: FAQDTO): Promise<any>;
21
+ getById(id: number): Promise<any>;
22
+ update(id: number, body: Partial<FAQDTO>): Promise<any>;
26
23
  delete(id: number): Promise<{
27
24
  deleted: boolean;
28
25
  message: string;
@@ -1 +1 @@
1
- {"version":3,"file":"faq.service.d.ts","sourceRoot":"","sources":["../src/faq.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,qBACa,UAAU;IAEnB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAFb,MAAM,EAAE,aAAa,EAErB,aAAa,EAAE,aAAa;IAGzC,IAAI,CAAC,gBAAgB,KAAA,EAAE,MAAM,EAAE,MAAM;cAoEzB,GAAG,EAAE;;;;;;;;IAUjB,QAAQ;;;IAOR,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAyBnC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAsBlC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM;;;;IAyBxD,MAAM,CAAC,EAAE,EAAE,MAAM;;;;CAqBxB"}
1
+ {"version":3,"file":"faq.service.d.ts","sourceRoot":"","sources":["../src/faq.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,qBACa,UAAU;IAEnB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAFb,MAAM,EAAE,aAAa,EAErB,aAAa,EAAE,aAAa;IAGzC,IAAI,CAAC,gBAAgB,KAAA,EAAE,MAAM,EAAE,MAAM;cAkEzB,GAAG,EAAE;;;;;;;;IAUjB,QAAQ;;;IAOR,MAAM,CAAC,IAAI,EAAE,MAAM;IAInB,OAAO,CAAC,EAAE,EAAE,MAAM;IAIlB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC;IAIxC,MAAM,CAAC,EAAE,EAAE,MAAM;;;;CAqBxB"}
@@ -43,8 +43,7 @@ let FAQService = class FAQService {
43
43
  ON fl.faq_id = f.id
44
44
  WHERE fl.locale_id = ${localeId}
45
45
  AND (
46
- LOWER(f.slug) LIKE ${like}
47
- OR LOWER(fl.question) LIKE ${like}
46
+ LOWER(fl.question) LIKE ${like}
48
47
  OR LOWER(fl.answer) LIKE ${like}
49
48
  )
50
49
  ORDER BY f.id DESC
@@ -68,7 +67,6 @@ let FAQService = class FAQService {
68
67
  const countQuery = this.prisma.faq.count({
69
68
  where: Object.assign({ faq_locale: { some: { locale_id: localeId } } }, (hasSearch && {
70
69
  OR: [
71
- { slug: { contains: searchRaw, mode: 'insensitive' } },
72
70
  { faq_locale: { some: { locale_id: localeId, question: { contains: searchRaw, mode: 'insensitive' } } } },
73
71
  { faq_locale: { some: { locale_id: localeId, answer: { contains: searchRaw, mode: 'insensitive' } } } },
74
72
  ],
@@ -96,63 +94,14 @@ let FAQService = class FAQService {
96
94
  total,
97
95
  };
98
96
  }
99
- async create(body, locale) {
100
- const localeRecord = await this.localeService.getByCode(locale);
101
- if (!localeRecord) {
102
- throw new Error(`Locale ${locale} not found`);
103
- }
104
- const { question, answer } = body;
105
- const faq = await this.prisma.faq.create({
106
- data: {
107
- faq_locale: {
108
- create: {
109
- locale_id: localeRecord.id,
110
- question,
111
- answer,
112
- },
113
- },
114
- },
115
- include: {
116
- faq_locale: true,
117
- },
118
- });
119
- return faq;
97
+ async create(body) {
98
+ return this.localeService.createModelWithLocale('faq', 'faq_id', body);
120
99
  }
121
- async getById(id, locale) {
122
- const localeRecord = await this.localeService.getByCode(locale);
123
- if (!localeRecord) {
124
- throw new Error(`Locale ${locale} not found`);
125
- }
126
- const faq = await this.prisma.faq.findUnique({
127
- where: { id },
128
- include: {
129
- faq_locale: {
130
- where: { locale_id: localeRecord.id },
131
- },
132
- },
133
- });
134
- if (!faq) {
135
- return null;
136
- }
137
- return faq;
100
+ async getById(id) {
101
+ return this.localeService.getModelWithLocale('faq', id);
138
102
  }
139
- async update(id, body, locale) {
140
- const localeRecord = await this.localeService.getByCode(locale);
141
- if (!localeRecord) {
142
- throw new Error(`Locale ${locale} not found`);
143
- }
144
- const { question, answer } = body;
145
- const updated = await this.prisma.faq_locale.updateMany({
146
- where: {
147
- faq_id: id,
148
- locale_id: localeRecord.id,
149
- },
150
- data: Object.assign(Object.assign({}, (question && { question })), (answer && { answer })),
151
- });
152
- return {
153
- updated: updated.count,
154
- message: updated.count > 0 ? 'FAQ updated successfully' : 'FAQ not found',
155
- };
103
+ async update(id, body) {
104
+ return this.localeService.updateModelWithLocale('faq', 'faq_id', id, body);
156
105
  }
157
106
  async delete(id) {
158
107
  const faq = await this.prisma.faq.findUnique({
@@ -1 +1 @@
1
- {"version":3,"file":"faq.service.js","sourceRoot":"","sources":["../src/faq.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"faq.service.js","sourceRoot":"","sources":["../src/faq.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ - url: /faq
2
+ icon: file-question-mark
3
+ name:
4
+ en: FAQ
5
+ pt: Perguntas Frequentes
6
+ slug: /faq
7
+ relations:
8
+ role:
9
+ - where:
10
+ slug: admin
@@ -12,4 +12,7 @@ columns:
12
12
  en: Answer
13
13
  pt: Resposta
14
14
  - type: created_at
15
- - type: updated_at
15
+ - type: updated_at
16
+ indexes:
17
+ - columns: [faq_id, locale_id]
18
+ unique: true
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hed-hog/faq",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "dependencies": {
@@ -1,11 +1,7 @@
1
- import { IsNotEmpty, IsString } from "class-validator";
1
+ import { IsNotEmpty, IsObject } from "class-validator";
2
2
 
3
3
  export class FAQDTO{
4
- @IsString()
4
+ @IsObject()
5
5
  @IsNotEmpty()
6
- question: string;
7
-
8
- @IsString()
9
- @IsNotEmpty()
10
- answer: string;
6
+ locale: Record<string, { question: string; answer: string }>;
11
7
  }
@@ -34,9 +34,8 @@ export class FAQController {
34
34
  @Get(':id')
35
35
  async getById(
36
36
  @Param('id', ParseIntPipe) id: number,
37
- @Locale() locale: string,
38
37
  ) {
39
- const faq = await this.faqService.getById(id, locale);
38
+ const faq = await this.faqService.getById(id);
40
39
 
41
40
  if (!faq) {
42
41
  throw new NotFoundException('FAQ not found');
@@ -48,18 +47,16 @@ export class FAQController {
48
47
  @Post()
49
48
  async create(
50
49
  @Body() body: FAQDTO,
51
- @Locale() locale: string,
52
50
  ) {
53
- return this.faqService.create(body, locale)
51
+ return this.faqService.create(body)
54
52
  }
55
53
 
56
54
  @Patch(':id')
57
55
  async update(
58
56
  @Param('id', ParseIntPipe) id: number,
59
57
  @Body() body: Partial<FAQDTO>,
60
- @Locale() locale: string,
61
58
  ) {
62
- return this.faqService.update(id, body, locale);
59
+ return this.faqService.update(id, body);
63
60
  }
64
61
 
65
62
  @Delete(':id')
package/src/faq.module.ts CHANGED
@@ -8,4 +8,4 @@ import { FAQService } from './faq.service';
8
8
  providers: [FAQService],
9
9
  exports: [forwardRef(() => FAQService)],
10
10
  })
11
- export class FAQModule {}
11
+ export class FaqModule {}
@@ -34,8 +34,7 @@ export class FAQService {
34
34
  ON fl.faq_id = f.id
35
35
  WHERE fl.locale_id = ${localeId}
36
36
  AND (
37
- LOWER(f.slug) LIKE ${like}
38
- OR LOWER(fl.question) LIKE ${like}
37
+ LOWER(fl.question) LIKE ${like}
39
38
  OR LOWER(fl.answer) LIKE ${like}
40
39
  )
41
40
  ORDER BY f.id DESC
@@ -62,7 +61,6 @@ export class FAQService {
62
61
  faq_locale: { some: { locale_id: localeId } },
63
62
  ...(hasSearch && {
64
63
  OR: [
65
- { slug: { contains: searchRaw, mode: 'insensitive' } },
66
64
  { faq_locale: { some: { locale_id: localeId, question: { contains: searchRaw, mode: 'insensitive' } } } },
67
65
  { faq_locale: { some: { locale_id: localeId, answer: { contains: searchRaw, mode: 'insensitive' } } } },
68
66
  ],
@@ -96,76 +94,16 @@ export class FAQService {
96
94
  };
97
95
  }
98
96
 
99
- async create(body: FAQDTO, locale: string){
100
- const localeRecord = await this.localeService.getByCode(locale);
101
- if (!localeRecord) {
102
- throw new Error(`Locale ${locale} not found`);
103
- }
104
-
105
- const { question, answer } = body;
106
- const faq = await this.prisma.faq.create({
107
- data: {
108
- faq_locale: {
109
- create: {
110
- locale_id: localeRecord.id,
111
- question,
112
- answer,
113
- },
114
- },
115
- },
116
- include: {
117
- faq_locale: true,
118
- },
119
- });
120
-
121
- return faq;
97
+ async create(body: FAQDTO){
98
+ return this.localeService.createModelWithLocale('faq', 'faq_id', body);
122
99
  }
123
100
 
124
- async getById(id: number, locale: string){
125
- const localeRecord = await this.localeService.getByCode(locale);
126
- if (!localeRecord) {
127
- throw new Error(`Locale ${locale} not found`);
128
- }
129
-
130
- const faq = await this.prisma.faq.findUnique({
131
- where: { id },
132
- include: {
133
- faq_locale: {
134
- where: { locale_id: localeRecord.id },
135
- },
136
- },
137
- });
138
-
139
- if (!faq) {
140
- return null;
141
- }
142
-
143
- return faq;
101
+ async getById(id: number){
102
+ return this.localeService.getModelWithLocale('faq', id);
144
103
  }
145
104
 
146
- async update(id: number, body: Partial<FAQDTO>, locale: string){
147
- const localeRecord = await this.localeService.getByCode(locale);
148
- if (!localeRecord) {
149
- throw new Error(`Locale ${locale} not found`);
150
- }
151
-
152
- const { question, answer } = body;
153
-
154
- const updated = await this.prisma.faq_locale.updateMany({
155
- where: {
156
- faq_id: id,
157
- locale_id: localeRecord.id,
158
- },
159
- data: {
160
- ...(question && { question }),
161
- ...(answer && { answer }),
162
- },
163
- });
164
-
165
- return {
166
- updated: updated.count,
167
- message: updated.count > 0 ? 'FAQ updated successfully' : 'FAQ not found',
168
- };
105
+ async update(id: number, body: Partial<FAQDTO>){
106
+ return this.localeService.updateModelWithLocale('faq', 'faq_id', id, body);
169
107
  }
170
108
 
171
109
  async delete(id: number){