@hed-hog/category 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.
@@ -3,6 +3,7 @@ import { CategoryDTO } from './dto/category.dto';
3
3
  export declare class CategoryController {
4
4
  private readonly categoryService;
5
5
  constructor(categoryService: CategoryService);
6
+ getRootCategories(locale: string): Promise<any[]>;
6
7
  getStats(): Promise<{
7
8
  total: number;
8
9
  totalActive: number;
@@ -10,16 +11,25 @@ export declare class CategoryController {
10
11
  totalRoot: number;
11
12
  }>;
12
13
  getById(id: number): Promise<{
14
+ category_locale: {
15
+ name: string;
16
+ id: number;
17
+ created_at: Date;
18
+ locale_id: number;
19
+ updated_at: Date;
20
+ category_id: number;
21
+ }[];
22
+ } & {
13
23
  id: number;
14
24
  created_at: Date;
15
25
  updated_at: Date;
16
26
  slug: string;
17
27
  icon: string;
18
28
  color: string;
19
- category_id: number;
29
+ category_id: number | null;
20
30
  status: import("@prisma/client").$Enums.category_status_enum;
21
31
  }>;
22
- getByParent(categoryId: string): Promise<any[]>;
32
+ getByParent(categoryId: string, locale: string): Promise<any[]>;
23
33
  findAll(paginationParams: any, locale: string, status: string, parent: string): Promise<{
24
34
  total: any;
25
35
  lastPage: number;
@@ -36,27 +46,36 @@ export declare class CategoryController {
36
46
  slug: string;
37
47
  icon: string;
38
48
  color: string;
39
- category_id: number;
49
+ category_id: number | null;
40
50
  status: import("@prisma/client").$Enums.category_status_enum;
41
51
  }>;
42
- create(locale: string, { name, slug, category_id, color, icon, status }: CategoryDTO): Promise<{
52
+ create({ locale, slug, category_id, color, icon, status }: CategoryDTO): Promise<{
43
53
  id: number;
44
54
  created_at: Date;
45
55
  updated_at: Date;
46
56
  slug: string;
47
57
  icon: string;
48
58
  color: string;
49
- category_id: number;
59
+ category_id: number | null;
50
60
  status: import("@prisma/client").$Enums.category_status_enum;
51
61
  }>;
52
- update(id: number, locale: string, { name, slug, category_id, color, icon, status }: Partial<CategoryDTO>): Promise<{
62
+ update(id: number, { locale, slug, category_id, color, icon, status }: Partial<CategoryDTO>): Promise<{
63
+ category_locale: {
64
+ name: string;
65
+ id: number;
66
+ created_at: Date;
67
+ locale_id: number;
68
+ updated_at: Date;
69
+ category_id: number;
70
+ }[];
71
+ } & {
53
72
  id: number;
54
73
  created_at: Date;
55
74
  updated_at: Date;
56
75
  slug: string;
57
76
  icon: string;
58
77
  color: string;
59
- category_id: number;
78
+ category_id: number | null;
60
79
  status: import("@prisma/client").$Enums.category_status_enum;
61
80
  }>;
62
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"category.controller.d.ts","sourceRoot":"","sources":["../src/category.controller.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,qBACa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,eAAe;IAI7C,QAAQ;;;;;;IAKR,OAAO,CAA4B,EAAE,EAAE,MAAM;;;;;;;;;;IAK7C,WAAW,CAAsB,UAAU,EAAE,MAAM;IAKnD,OAAO,CACG,gBAAgB,KAAA,EACpB,MAAM,EAAE,MAAM,EACP,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM;;;;;;;;;IAM3B,MAAM,CAA4B,EAAE,EAAE,MAAM;;;;;;;;;;IAK5C,MAAM,CACA,MAAM,EAAE,MAAM,EAChB,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,WAAW;;;;;;;;;;IAgBjE,MAAM,CACiB,EAAE,EAAE,MAAM,EAC3B,MAAM,EAAE,MAAM,EAChB,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,WAAW,CAAC;;;;;;;;;;CAejF"}
1
+ {"version":3,"file":"category.controller.d.ts","sourceRoot":"","sources":["../src/category.controller.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,qBACa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,EAAE,eAAe;IAI7C,iBAAiB,CAAW,MAAM,EAAE,MAAM;IAK1C,QAAQ;;;;;;IAKR,OAAO,CAA4B,EAAE,EAAE,MAAM;;;;;;;;;;;;;;;;;;;IAK7C,WAAW,CACM,UAAU,EAAE,MAAM,EAC7B,MAAM,EAAE,MAAM;IAMpB,OAAO,CACG,gBAAgB,KAAA,EACpB,MAAM,EAAE,MAAM,EACP,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM;;;;;;;;;IAM3B,MAAM,CAA4B,EAAE,EAAE,MAAM;;;;;;;;;;IAK5C,MAAM,CACF,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,WAAW;;;;;;;;;;IAenE,MAAM,CACiB,EAAE,EAAE,MAAM,EAC7B,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;CAcnF"}
@@ -22,14 +22,17 @@ let CategoryController = class CategoryController {
22
22
  constructor(categoryService) {
23
23
  this.categoryService = categoryService;
24
24
  }
25
+ async getRootCategories(locale) {
26
+ return this.categoryService.getRootCategories(locale);
27
+ }
25
28
  async getStats() {
26
29
  return this.categoryService.getStats();
27
30
  }
28
31
  async getById(id) {
29
32
  return this.categoryService.getById(id);
30
33
  }
31
- async getByParent(categoryId) {
32
- return this.categoryService.getByParent(categoryId);
34
+ async getByParent(categoryId, locale) {
35
+ return this.categoryService.getByParent(categoryId, locale);
33
36
  }
34
37
  async findAll(paginationParams, locale, status, parent) {
35
38
  return this.categoryService.findAll(paginationParams, locale, status, parent);
@@ -37,9 +40,9 @@ let CategoryController = class CategoryController {
37
40
  async delete(id) {
38
41
  return this.categoryService.delete(id);
39
42
  }
40
- async create(locale, { name, slug, category_id, color, icon, status }) {
41
- return this.categoryService.create(locale, {
42
- name,
43
+ async create({ locale, slug, category_id, color, icon, status }) {
44
+ return this.categoryService.create({
45
+ locale,
43
46
  slug,
44
47
  category_id,
45
48
  color,
@@ -47,9 +50,9 @@ let CategoryController = class CategoryController {
47
50
  status,
48
51
  });
49
52
  }
50
- async update(id, locale, { name, slug, category_id, color, icon, status }) {
51
- return this.categoryService.update(id, locale, {
52
- name,
53
+ async update(id, { locale, slug, category_id, color, icon, status }) {
54
+ return this.categoryService.update(id, {
55
+ locale,
53
56
  slug,
54
57
  category_id,
55
58
  color,
@@ -59,6 +62,13 @@ let CategoryController = class CategoryController {
59
62
  }
60
63
  };
61
64
  exports.CategoryController = CategoryController;
65
+ __decorate([
66
+ (0, common_1.Get)('root'),
67
+ __param(0, (0, api_locale_1.Locale)()),
68
+ __metadata("design:type", Function),
69
+ __metadata("design:paramtypes", [String]),
70
+ __metadata("design:returntype", Promise)
71
+ ], CategoryController.prototype, "getRootCategories", null);
62
72
  __decorate([
63
73
  (0, common_1.Get)('stats'),
64
74
  __metadata("design:type", Function),
@@ -75,8 +85,9 @@ __decorate([
75
85
  __decorate([
76
86
  (0, common_1.Get)('parent/:categoryId'),
77
87
  __param(0, (0, common_1.Param)('categoryId')),
88
+ __param(1, (0, api_locale_1.Locale)()),
78
89
  __metadata("design:type", Function),
79
- __metadata("design:paramtypes", [String]),
90
+ __metadata("design:paramtypes", [String, String]),
80
91
  __metadata("design:returntype", Promise)
81
92
  ], CategoryController.prototype, "getByParent", null);
82
93
  __decorate([
@@ -98,19 +109,17 @@ __decorate([
98
109
  ], CategoryController.prototype, "delete", null);
99
110
  __decorate([
100
111
  (0, common_1.Post)(),
101
- __param(0, (0, api_locale_1.Locale)()),
102
- __param(1, (0, common_1.Body)()),
112
+ __param(0, (0, common_1.Body)()),
103
113
  __metadata("design:type", Function),
104
- __metadata("design:paramtypes", [String, category_dto_1.CategoryDTO]),
114
+ __metadata("design:paramtypes", [category_dto_1.CategoryDTO]),
105
115
  __metadata("design:returntype", Promise)
106
116
  ], CategoryController.prototype, "create", null);
107
117
  __decorate([
108
118
  (0, common_1.Patch)(':id'),
109
119
  __param(0, (0, common_1.Param)('id', common_1.ParseIntPipe)),
110
- __param(1, (0, api_locale_1.Locale)()),
111
- __param(2, (0, common_1.Body)()),
120
+ __param(1, (0, common_1.Body)()),
112
121
  __metadata("design:type", Function),
113
- __metadata("design:paramtypes", [Number, String, Object]),
122
+ __metadata("design:paramtypes", [Number, Object]),
114
123
  __metadata("design:returntype", Promise)
115
124
  ], CategoryController.prototype, "update", null);
116
125
  exports.CategoryController = CategoryController = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"category.controller.js","sourceRoot":"","sources":["../src/category.controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"category.controller.js","sourceRoot":"","sources":["../src/category.controller.ts"],"names":[],"mappings":"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"}
@@ -14,16 +14,26 @@ export declare class CategoryService {
14
14
  totalRoot: number;
15
15
  }>;
16
16
  getById(id: number): Promise<{
17
+ category_locale: {
18
+ name: string;
19
+ id: number;
20
+ created_at: Date;
21
+ locale_id: number;
22
+ updated_at: Date;
23
+ category_id: number;
24
+ }[];
25
+ } & {
17
26
  id: number;
18
27
  created_at: Date;
19
28
  updated_at: Date;
20
29
  slug: string;
21
30
  icon: string;
22
31
  color: string;
23
- category_id: number;
32
+ category_id: number | null;
24
33
  status: import("@prisma/client").$Enums.category_status_enum;
25
34
  }>;
26
- getByParent(id: string): Promise<any[]>;
35
+ getRootCategories(locale: string): Promise<any[]>;
36
+ getByParent(id: string, locale: string): Promise<any[]>;
27
37
  findAll(paginationParams: PaginationDTO, locale: string, status: string, parent: string): Promise<{
28
38
  total: any;
29
39
  lastPage: number;
@@ -40,27 +50,36 @@ export declare class CategoryService {
40
50
  slug: string;
41
51
  icon: string;
42
52
  color: string;
43
- category_id: number;
53
+ category_id: number | null;
44
54
  status: import("@prisma/client").$Enums.category_status_enum;
45
55
  }>;
46
- create(locale: string, { name, slug, category_id, color, icon, status }: CategoryDTO): Promise<{
56
+ create({ locale, slug, category_id, color, icon, status }: CategoryDTO): Promise<{
47
57
  id: number;
48
58
  created_at: Date;
49
59
  updated_at: Date;
50
60
  slug: string;
51
61
  icon: string;
52
62
  color: string;
53
- category_id: number;
63
+ category_id: number | null;
54
64
  status: import("@prisma/client").$Enums.category_status_enum;
55
65
  }>;
56
- update(id: number, locale: string, { name, slug, category_id, color, icon, status }: Partial<CategoryDTO>): Promise<{
66
+ update(id: number, { locale, slug, category_id, color, icon, status }: Partial<CategoryDTO>): Promise<{
67
+ category_locale: {
68
+ name: string;
69
+ id: number;
70
+ created_at: Date;
71
+ locale_id: number;
72
+ updated_at: Date;
73
+ category_id: number;
74
+ }[];
75
+ } & {
57
76
  id: number;
58
77
  created_at: Date;
59
78
  updated_at: Date;
60
79
  slug: string;
61
80
  icon: string;
62
81
  color: string;
63
- category_id: number;
82
+ category_id: number | null;
64
83
  status: import("@prisma/client").$Enums.category_status_enum;
65
84
  }>;
66
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"category.service.d.ts","sourceRoot":"","sources":["../src/category.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,qBACa,eAAe;IAExB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAE3B,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAHb,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,iBAAiB,EAE7B,aAAa,EAAE,aAAa;IAGzC,QAAQ;;;;;;IAoBR,OAAO,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;IAMlB,WAAW,CAAC,EAAE,EAAE,MAAM;IAatB,OAAO,CAAC,gBAAgB,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;IAuCvF,MAAM,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;IAcjB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,WAAW;;;;;;;;;;IA2BpF,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,WAAW,CAAC;;;;;;;;;;CAmDhH"}
1
+ {"version":3,"file":"category.service.d.ts","sourceRoot":"","sources":["../src/category.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,qBACa,eAAe;IAExB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAE3B,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAHb,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,iBAAiB,EAE7B,aAAa,EAAE,aAAa;IAGzC,QAAQ;;;;;;IAoBR,OAAO,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;;;;;;;;;;IAelB,iBAAiB,CAAC,MAAM,EAAE,MAAM;IAuBhC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAsBtC,OAAO,CAAC,gBAAgB,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;;;IAgDvF,MAAM,CAAC,EAAE,EAAE,MAAM;;;;;;;;;;IAcjB,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,WAAW;;;;;;;;;;IAkCtE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;CAsDlG"}
@@ -43,20 +43,57 @@ let CategoryService = class CategoryService {
43
43
  };
44
44
  }
45
45
  async getById(id) {
46
- return this.prisma.category.findUnique({
46
+ const category = await this.prisma.category.findUnique({
47
47
  where: { id: Number(id) },
48
+ include: {
49
+ category_locale: true,
50
+ },
51
+ });
52
+ if (!category) {
53
+ return null;
54
+ }
55
+ return category;
56
+ }
57
+ async getRootCategories(locale) {
58
+ const localeRecord = await this.localeService.getByCode(locale);
59
+ if (!localeRecord) {
60
+ throw new common_1.BadRequestException(`Locale ${locale} not found`);
61
+ }
62
+ const categories = await this.prisma.category.findMany({
63
+ where: { category_id: null, status: 'active' },
64
+ include: {
65
+ category_locale: {
66
+ where: {
67
+ locale_id: localeRecord.id,
68
+ },
69
+ },
70
+ },
71
+ orderBy: { id: 'asc' },
48
72
  });
73
+ return categories.map((category) => (0, api_1.itemTranslations)('category_locale', category));
49
74
  }
50
- async getByParent(id) {
75
+ async getByParent(id, locale) {
76
+ const localeRecord = await this.localeService.getByCode(locale);
77
+ if (!localeRecord) {
78
+ throw new common_1.BadRequestException(`Locale ${locale} not found`);
79
+ }
51
80
  const categories = await this.prisma.category.findMany({
52
81
  where: { category_id: Number(id) },
53
82
  include: {
54
- category_locale: true,
83
+ category_locale: {
84
+ where: {
85
+ locale_id: localeRecord.id,
86
+ },
87
+ },
55
88
  },
56
89
  });
57
90
  return categories.map((category) => (0, api_1.itemTranslations)('category_locale', category));
58
91
  }
59
92
  async findAll(paginationParams, locale, status, parent) {
93
+ const localeRecord = await this.localeService.getByCode(locale);
94
+ if (!localeRecord) {
95
+ throw new common_1.BadRequestException(`Locale ${locale} not found`);
96
+ }
60
97
  const fields = ['slug'];
61
98
  const OR = this.prisma.createInsensitiveSearch(fields, paginationParams);
62
99
  const AND = [];
@@ -74,7 +111,11 @@ let CategoryService = class CategoryService {
74
111
  AND,
75
112
  },
76
113
  include: {
77
- category_locale: true,
114
+ category_locale: {
115
+ where: {
116
+ locale_id: localeRecord.id,
117
+ },
118
+ },
78
119
  },
79
120
  }, locale);
80
121
  result.data = result.data.map((category) => (0, api_1.itemTranslations)('category_locale', category));
@@ -91,11 +132,7 @@ let CategoryService = class CategoryService {
91
132
  where: { id: Number(id) },
92
133
  });
93
134
  }
94
- async create(locale, { name, slug, category_id, color, icon, status }) {
95
- const localeRecord = await this.localeService.getByCode(locale);
96
- if (!localeRecord) {
97
- throw new common_1.BadRequestException(`Locale ${locale} not found`);
98
- }
135
+ async create({ locale, slug, category_id, color, icon, status }) {
99
136
  const category = await this.prisma.category.create({
100
137
  data: {
101
138
  slug,
@@ -108,16 +145,23 @@ let CategoryService = class CategoryService {
108
145
  if (!category) {
109
146
  throw new common_1.BadRequestException('Category not created');
110
147
  }
111
- await this.prisma.category_locale.create({
112
- data: { name, category_id: category.id, locale_id: localeRecord.id },
113
- });
148
+ // Process all locales from the locale object
149
+ for (const [localeCode, localeData] of Object.entries(locale)) {
150
+ const localeRecord = await this.localeService.getByCode(localeCode);
151
+ if (!localeRecord) {
152
+ throw new common_1.BadRequestException(`Locale ${localeCode} not found`);
153
+ }
154
+ await this.prisma.category_locale.create({
155
+ data: {
156
+ name: localeData.name,
157
+ category_id: category.id,
158
+ locale_id: localeRecord.id,
159
+ },
160
+ });
161
+ }
114
162
  return category;
115
163
  }
116
- async update(id, locale, { name, slug, category_id, color, icon, status }) {
117
- const localeRecord = await this.localeService.getByCode(locale);
118
- if (!localeRecord) {
119
- throw new common_1.BadRequestException(`Locale ${locale} not found`);
120
- }
164
+ async update(id, { locale, slug, category_id, color, icon, status }) {
121
165
  const category = await this.prisma.category.findUnique({
122
166
  where: { id: Number(id) },
123
167
  });
@@ -134,27 +178,34 @@ let CategoryService = class CategoryService {
134
178
  status,
135
179
  },
136
180
  });
137
- if (name) {
138
- const existingLocale = await this.prisma.category_locale.findFirst({
139
- where: {
140
- category_id: Number(id),
141
- locale_id: localeRecord.id,
142
- },
143
- });
144
- if (existingLocale) {
145
- await this.prisma.category_locale.update({
146
- where: { id: existingLocale.id },
147
- data: { name },
148
- });
149
- }
150
- else {
151
- await this.prisma.category_locale.create({
152
- data: {
181
+ // Process all locales from the locale object
182
+ if (locale) {
183
+ for (const [localeCode, localeData] of Object.entries(locale)) {
184
+ const localeRecord = await this.localeService.getByCode(localeCode);
185
+ if (!localeRecord) {
186
+ throw new common_1.BadRequestException(`Locale ${localeCode} not found`);
187
+ }
188
+ const existingLocale = await this.prisma.category_locale.findFirst({
189
+ where: {
153
190
  category_id: Number(id),
154
191
  locale_id: localeRecord.id,
155
- name,
156
192
  },
157
193
  });
194
+ if (existingLocale) {
195
+ await this.prisma.category_locale.update({
196
+ where: { id: existingLocale.id },
197
+ data: { name: localeData.name },
198
+ });
199
+ }
200
+ else {
201
+ await this.prisma.category_locale.create({
202
+ data: {
203
+ category_id: Number(id),
204
+ locale_id: localeRecord.id,
205
+ name: localeData.name,
206
+ },
207
+ });
208
+ }
158
209
  }
159
210
  }
160
211
  return this.getById(id);
@@ -1 +1 @@
1
- {"version":3,"file":"category.service.js","sourceRoot":"","sources":["../src/category.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"category.service.js","sourceRoot":"","sources":["../src/category.service.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,8 @@ export declare class CategoryDTO {
4
4
  color?: string;
5
5
  icon?: string;
6
6
  status?: 'active' | 'inactive';
7
- name: string;
7
+ locale: Record<string, {
8
+ name: string;
9
+ }>;
8
10
  }
9
11
  //# sourceMappingURL=category.dto.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"category.dto.d.ts","sourceRoot":"","sources":["../../src/dto/category.dto.ts"],"names":[],"mappings":"AASA,qBAAa,WAAW;IAGtB,IAAI,EAAE,MAAM,CAAC;IAIb,WAAW,CAAC,EAAE,MAAM,CAAC;IAOrB,KAAK,CAAC,EAAE,MAAM,CAAC;IAIf,IAAI,CAAC,EAAE,MAAM,CAAC;IAMd,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAI/B,IAAI,EAAE,MAAM,CAAC;CACd"}
1
+ {"version":3,"file":"category.dto.d.ts","sourceRoot":"","sources":["../../src/dto/category.dto.ts"],"names":[],"mappings":"AAUA,qBAAa,WAAW;IAGtB,IAAI,EAAE,MAAM,CAAC;IAIb,WAAW,CAAC,EAAE,MAAM,CAAC;IAOrB,KAAK,CAAC,EAAE,MAAM,CAAC;IAIf,IAAI,CAAC,EAAE,MAAM,CAAC;IAMd,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAI/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1C"}
@@ -45,8 +45,8 @@ __decorate([
45
45
  __metadata("design:type", String)
46
46
  ], CategoryDTO.prototype, "status", void 0);
47
47
  __decorate([
48
- (0, class_validator_1.IsString)({ message: 'O nome deve ser uma string.' }),
49
- (0, class_validator_1.IsNotEmpty)({ message: 'O nome é obrigatório.' }),
50
- __metadata("design:type", String)
51
- ], CategoryDTO.prototype, "name", void 0);
48
+ (0, class_validator_1.IsObject)(),
49
+ (0, class_validator_1.IsNotEmpty)(),
50
+ __metadata("design:type", Object)
51
+ ], CategoryDTO.prototype, "locale", void 0);
52
52
  //# sourceMappingURL=category.dto.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"category.dto.js","sourceRoot":"","sources":["../../src/dto/category.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAOyB;AAEzB,MAAa,WAAW;CA6BvB;AA7BD,kCA6BC;AA1BC;IAFC,IAAA,0BAAQ,EAAC,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC;IACpD,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC;;yCACpC;AAIb;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,EAAC,EAAE,EAAE,EAAE,OAAO,EAAE,uCAAuC,EAAE,CAAC;;gDAC9C;AAOrB;IALC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,EAAC,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC;IACnD,IAAA,yBAAO,EAAC,oCAAoC,EAAE;QAC7C,OAAO,EAAE,6CAA6C;KACvD,CAAC;;0CACa;AAIf;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,EAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC;;yCACxC;AAMd;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,EAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE;QAC9B,OAAO,EAAE,2CAA2C;KACrD,CAAC;;2CAC6B;AAI/B;IAFC,IAAA,0BAAQ,EAAC,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC;IACpD,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC;;yCACpC"}
1
+ {"version":3,"file":"category.dto.js","sourceRoot":"","sources":["../../src/dto/category.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAQyB;AAEzB,MAAa,WAAW;CA6BvB;AA7BD,kCA6BC;AA1BC;IAFC,IAAA,0BAAQ,EAAC,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC;IACpD,IAAA,4BAAU,EAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC;;yCACpC;AAIb;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,EAAC,EAAE,EAAE,EAAE,OAAO,EAAE,uCAAuC,EAAE,CAAC;;gDAC9C;AAOrB;IALC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,EAAC,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC;IACnD,IAAA,yBAAO,EAAC,oCAAoC,EAAE;QAC7C,OAAO,EAAE,6CAA6C;KACvD,CAAC;;0CACa;AAIf;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,EAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC;;yCACxC;AAMd;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,EAAC,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE;QAC9B,OAAO,EAAE,2CAA2C;KACrD,CAAC;;2CAC6B;AAI/B;IAFC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;2CAC4B"}
@@ -16,6 +16,12 @@
16
16
  role:
17
17
  - where:
18
18
  slug: admin
19
+ - url: /category/root
20
+ method: GET
21
+ relations:
22
+ role:
23
+ - where:
24
+ slug: admin
19
25
  - url: /category/:id
20
26
  method: GET
21
27
  relations:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hed-hog/category",
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": {
@@ -10,9 +10,9 @@
10
10
  "@nestjs/jwt": "^11",
11
11
  "@nestjs/mapped-types": "*",
12
12
  "@hed-hog/api": "0.0.3",
13
- "@hed-hog/api-locale": "0.0.10",
14
13
  "@hed-hog/api-pagination": "0.0.3",
15
- "@hed-hog/admin": "0.0.130",
14
+ "@hed-hog/admin": "0.0.132",
15
+ "@hed-hog/api-locale": "0.0.10",
16
16
  "@hed-hog/api-prisma": "0.0.4"
17
17
  },
18
18
  "exports": {
@@ -20,6 +20,11 @@ export class CategoryController {
20
20
  private readonly categoryService: CategoryService
21
21
  ) {}
22
22
 
23
+ @Get('root')
24
+ async getRootCategories(@Locale() locale: string) {
25
+ return this.categoryService.getRootCategories(locale)
26
+ }
27
+
23
28
  @Get('stats')
24
29
  async getStats() {
25
30
  return this.categoryService.getStats()
@@ -31,8 +36,11 @@ export class CategoryController {
31
36
  }
32
37
 
33
38
  @Get('parent/:categoryId')
34
- async getByParent(@Param('categoryId') categoryId: string) {
35
- return this.categoryService.getByParent(categoryId)
39
+ async getByParent(
40
+ @Param('categoryId') categoryId: string,
41
+ @Locale() locale: string,
42
+ ) {
43
+ return this.categoryService.getByParent(categoryId, locale)
36
44
  }
37
45
 
38
46
  @Get()
@@ -52,13 +60,11 @@ export class CategoryController {
52
60
 
53
61
  @Post()
54
62
  async create(
55
- @Locale() locale: string,
56
- @Body() { name, slug, category_id, color, icon, status }: CategoryDTO,
63
+ @Body() { locale, slug, category_id, color, icon, status }: CategoryDTO,
57
64
  ) {
58
65
  return this.categoryService.create(
59
- locale,
60
66
  {
61
- name,
67
+ locale,
62
68
  slug,
63
69
  category_id,
64
70
  color,
@@ -71,14 +77,12 @@ export class CategoryController {
71
77
  @Patch(':id')
72
78
  async update(
73
79
  @Param('id', ParseIntPipe) id: number,
74
- @Locale() locale: string,
75
- @Body() { name, slug, category_id, color, icon, status }: Partial<CategoryDTO>,
80
+ @Body() { locale, slug, category_id, color, icon, status }: Partial<CategoryDTO>,
76
81
  ) {
77
82
  return this.categoryService.update(
78
83
  id,
79
- locale,
80
84
  {
81
- name,
85
+ locale,
82
86
  slug,
83
87
  category_id,
84
88
  color,
@@ -35,16 +35,57 @@ export class CategoryService {
35
35
  }
36
36
 
37
37
  async getById(id: number){
38
- return this.prisma.category.findUnique({
38
+ const category = await this.prisma.category.findUnique({
39
39
  where: { id: Number(id) },
40
+ include: {
41
+ category_locale: true,
42
+ },
40
43
  });
44
+
45
+ if (!category) {
46
+ return null;
47
+ }
48
+
49
+ return category;
41
50
  }
42
51
 
43
- async getByParent(id: string){
52
+ async getRootCategories(locale: string){
53
+ const localeRecord = await this.localeService.getByCode(locale);
54
+ if (!localeRecord) {
55
+ throw new BadRequestException(`Locale ${locale} not found`);
56
+ }
57
+
58
+ const categories = await this.prisma.category.findMany({
59
+ where: { category_id: null, status: 'active' },
60
+ include: {
61
+ category_locale: {
62
+ where: {
63
+ locale_id: localeRecord.id,
64
+ },
65
+ },
66
+ },
67
+ orderBy: { id: 'asc' },
68
+ });
69
+
70
+ return categories.map((category) =>
71
+ itemTranslations('category_locale', category),
72
+ );
73
+ }
74
+
75
+ async getByParent(id: string, locale: string){
76
+ const localeRecord = await this.localeService.getByCode(locale);
77
+ if (!localeRecord) {
78
+ throw new BadRequestException(`Locale ${locale} not found`);
79
+ }
80
+
44
81
  const categories = await this.prisma.category.findMany({
45
82
  where: { category_id: Number(id) },
46
83
  include: {
47
- category_locale: true,
84
+ category_locale: {
85
+ where: {
86
+ locale_id: localeRecord.id,
87
+ },
88
+ },
48
89
  },
49
90
  });
50
91
 
@@ -54,6 +95,11 @@ export class CategoryService {
54
95
  }
55
96
 
56
97
  async findAll(paginationParams: PaginationDTO, locale: string, status: string, parent: string){
98
+ const localeRecord = await this.localeService.getByCode(locale);
99
+ if (!localeRecord) {
100
+ throw new BadRequestException(`Locale ${locale} not found`);
101
+ }
102
+
57
103
  const fields = ['slug'];
58
104
  const OR = this.prisma.createInsensitiveSearch(fields, paginationParams);
59
105
  const AND = [];
@@ -79,7 +125,11 @@ export class CategoryService {
79
125
  AND,
80
126
  },
81
127
  include: {
82
- category_locale: true,
128
+ category_locale: {
129
+ where: {
130
+ locale_id: localeRecord.id,
131
+ },
132
+ },
83
133
  },
84
134
  },
85
135
  locale,
@@ -106,12 +156,7 @@ export class CategoryService {
106
156
  });
107
157
  }
108
158
 
109
- async create(locale: string, { name, slug, category_id, color, icon, status }: CategoryDTO){
110
- const localeRecord = await this.localeService.getByCode(locale);
111
- if (!localeRecord) {
112
- throw new BadRequestException(`Locale ${locale} not found`);
113
- }
114
-
159
+ async create({ locale, slug, category_id, color, icon, status }: CategoryDTO){
115
160
  const category = await this.prisma.category.create({
116
161
  data: {
117
162
  slug,
@@ -126,19 +171,26 @@ export class CategoryService {
126
171
  throw new BadRequestException('Category not created');
127
172
  }
128
173
 
129
- await this.prisma.category_locale.create({
130
- data: { name, category_id: category.id, locale_id: localeRecord.id },
131
- });
174
+ // Process all locales from the locale object
175
+ for (const [localeCode, localeData] of Object.entries(locale)) {
176
+ const localeRecord = await this.localeService.getByCode(localeCode);
177
+ if (!localeRecord) {
178
+ throw new BadRequestException(`Locale ${localeCode} not found`);
179
+ }
180
+
181
+ await this.prisma.category_locale.create({
182
+ data: {
183
+ name: localeData.name,
184
+ category_id: category.id,
185
+ locale_id: localeRecord.id,
186
+ },
187
+ });
188
+ }
132
189
 
133
190
  return category;
134
191
  }
135
192
 
136
- async update(id: number, locale: string, { name, slug, category_id, color, icon, status }: Partial<CategoryDTO>){
137
- const localeRecord = await this.localeService.getByCode(locale);
138
- if (!localeRecord) {
139
- throw new BadRequestException(`Locale ${locale} not found`);
140
- }
141
-
193
+ async update(id: number, { locale, slug, category_id, color, icon, status }: Partial<CategoryDTO>){
142
194
  const category = await this.prisma.category.findUnique({
143
195
  where: { id: Number(id) },
144
196
  });
@@ -158,27 +210,35 @@ export class CategoryService {
158
210
  },
159
211
  });
160
212
 
161
- if (name) {
162
- const existingLocale = await this.prisma.category_locale.findFirst({
163
- where: {
164
- category_id: Number(id),
165
- locale_id: localeRecord.id,
166
- },
167
- });
213
+ // Process all locales from the locale object
214
+ if (locale) {
215
+ for (const [localeCode, localeData] of Object.entries(locale)) {
216
+ const localeRecord = await this.localeService.getByCode(localeCode);
217
+ if (!localeRecord) {
218
+ throw new BadRequestException(`Locale ${localeCode} not found`);
219
+ }
168
220
 
169
- if (existingLocale) {
170
- await this.prisma.category_locale.update({
171
- where: { id: existingLocale.id },
172
- data: { name },
173
- });
174
- } else {
175
- await this.prisma.category_locale.create({
176
- data: {
221
+ const existingLocale = await this.prisma.category_locale.findFirst({
222
+ where: {
177
223
  category_id: Number(id),
178
224
  locale_id: localeRecord.id,
179
- name,
180
225
  },
181
226
  });
227
+
228
+ if (existingLocale) {
229
+ await this.prisma.category_locale.update({
230
+ where: { id: existingLocale.id },
231
+ data: { name: localeData.name },
232
+ });
233
+ } else {
234
+ await this.prisma.category_locale.create({
235
+ data: {
236
+ category_id: Number(id),
237
+ locale_id: localeRecord.id,
238
+ name: localeData.name,
239
+ },
240
+ });
241
+ }
182
242
  }
183
243
  }
184
244
 
@@ -1,10 +1,11 @@
1
1
  import {
2
- IsEnum,
3
- IsNotEmpty,
4
- IsNumber,
5
- IsOptional,
6
- IsString,
7
- Matches,
2
+ IsEnum,
3
+ IsNotEmpty,
4
+ IsNumber,
5
+ IsObject,
6
+ IsOptional,
7
+ IsString,
8
+ Matches,
8
9
  } from 'class-validator';
9
10
 
10
11
  export class CategoryDTO {
@@ -33,7 +34,7 @@ export class CategoryDTO {
33
34
  })
34
35
  status?: 'active' | 'inactive';
35
36
 
36
- @IsString({ message: 'O nome deve ser uma string.' })
37
- @IsNotEmpty({ message: 'O nome é obrigatório.' })
38
- name: string;
37
+ @IsObject()
38
+ @IsNotEmpty()
39
+ locale: Record<string, { name: string }>;
39
40
  }