@purpleschool/gptbot 0.6.2 → 0.6.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.
Files changed (33) hide show
  1. package/api/controllers/http/folder.ts +10 -0
  2. package/api/controllers/http/index.ts +1 -0
  3. package/api/routes.ts +12 -0
  4. package/build/api/controllers/http/folder.js +12 -0
  5. package/build/api/controllers/http/index.js +1 -0
  6. package/build/api/routes.js +8 -0
  7. package/build/commands/chat/update-chat.command.js +5 -2
  8. package/build/commands/folder/create-folder.command.js +15 -0
  9. package/build/commands/folder/delete-folder.command.js +19 -0
  10. package/build/commands/folder/find-folder-by-uuid-with-chats.command.js +27 -0
  11. package/build/commands/folder/find-folder-by-uuid.command.js +17 -0
  12. package/build/commands/folder/find-folders-by-user.command.js +20 -0
  13. package/build/commands/folder/index.js +22 -0
  14. package/build/commands/folder/update-folder.command.js +18 -0
  15. package/build/commands/index.js +1 -0
  16. package/build/constants/errors/errors.js +37 -2
  17. package/build/models/ai-model.schema.js +1 -0
  18. package/build/models/folder.schema.js +12 -0
  19. package/build/models/index.js +1 -0
  20. package/commands/chat/update-chat.command.ts +7 -3
  21. package/commands/folder/create-folder.command.ts +17 -0
  22. package/commands/folder/delete-folder.command.ts +18 -0
  23. package/commands/folder/find-folder-by-uuid-with-chats.command.ts +31 -0
  24. package/commands/folder/find-folder-by-uuid.command.ts +16 -0
  25. package/commands/folder/find-folders-by-user.command.ts +19 -0
  26. package/commands/folder/index.ts +6 -0
  27. package/commands/folder/update-folder.command.ts +23 -0
  28. package/commands/index.ts +1 -0
  29. package/constants/errors/errors.ts +38 -2
  30. package/models/ai-model.schema.ts +1 -0
  31. package/models/folder.schema.ts +10 -0
  32. package/models/index.ts +1 -0
  33. package/package.json +1 -1
@@ -0,0 +1,10 @@
1
+ export const FOLDER_PRIVATE_CONTROLLER = 'private/folder' as const;
2
+
3
+ export const FOLDER_ROUTES = {
4
+ FIND_MANY_BY_USER: 'user',
5
+ FIND_BY_UUID: (uuid: string) => `${uuid}`,
6
+ FIND_BY_UUID_WITH_CHATS: (uuid: string) => `${uuid}/chats`,
7
+ CREATE: '',
8
+ UPDATE: (uuid: string) => `${uuid}`,
9
+ DELETE: (uuid: string) => `${uuid}`,
10
+ } as const;
@@ -39,3 +39,4 @@ export * from './review';
39
39
  export * from './prompt-category';
40
40
  export * from './prompt-topic';
41
41
  export * from './prompt';
42
+ export * from './folder';
package/api/routes.ts CHANGED
@@ -231,4 +231,16 @@ export const REST_API = {
231
231
  FIND: (topicId: string) =>
232
232
  `${ROOT}/${CONTROLLERS.PROMPT_PUBLIC_CONTROLLER}/${CONTROLLERS.PROMPT_ROUTES.FIND(topicId)}`,
233
233
  },
234
+ FOLDER_PRIVATE: {
235
+ FIND_BY_UUID: (uuid: string) =>
236
+ `${ROOT}/${CONTROLLERS.FOLDER_PRIVATE_CONTROLLER}/${CONTROLLERS.FOLDER_ROUTES.FIND_BY_UUID(uuid)}`,
237
+ FIND_BY_UUID_WITH_CHATS: (uuid: string) =>
238
+ `${ROOT}/${CONTROLLERS.FOLDER_PRIVATE_CONTROLLER}/${CONTROLLERS.FOLDER_ROUTES.FIND_BY_UUID_WITH_CHATS(uuid)}`,
239
+ FIND_MANY_BY_USER: `${ROOT}/${CONTROLLERS.FOLDER_PRIVATE_CONTROLLER}/${CONTROLLERS.FOLDER_ROUTES.FIND_MANY_BY_USER}`,
240
+ CREATE: `${ROOT}/${CONTROLLERS.FOLDER_PRIVATE_CONTROLLER}/${CONTROLLERS.FOLDER_ROUTES.CREATE}`,
241
+ UPDATE: (uuid: string) =>
242
+ `${ROOT}/${CONTROLLERS.FOLDER_PRIVATE_CONTROLLER}/${CONTROLLERS.FOLDER_ROUTES.UPDATE(uuid)}`,
243
+ DELETE: (uuid: string) =>
244
+ `${ROOT}/${CONTROLLERS.FOLDER_PRIVATE_CONTROLLER}/${CONTROLLERS.FOLDER_ROUTES.DELETE(uuid)}`,
245
+ },
234
246
  } as const;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FOLDER_ROUTES = exports.FOLDER_PRIVATE_CONTROLLER = void 0;
4
+ exports.FOLDER_PRIVATE_CONTROLLER = 'private/folder';
5
+ exports.FOLDER_ROUTES = {
6
+ FIND_MANY_BY_USER: 'user',
7
+ FIND_BY_UUID: (uuid) => `${uuid}`,
8
+ FIND_BY_UUID_WITH_CHATS: (uuid) => `${uuid}/chats`,
9
+ CREATE: '',
10
+ UPDATE: (uuid) => `${uuid}`,
11
+ DELETE: (uuid) => `${uuid}`,
12
+ };
@@ -55,3 +55,4 @@ __exportStar(require("./review"), exports);
55
55
  __exportStar(require("./prompt-category"), exports);
56
56
  __exportStar(require("./prompt-topic"), exports);
57
57
  __exportStar(require("./prompt"), exports);
58
+ __exportStar(require("./folder"), exports);
@@ -221,4 +221,12 @@ exports.REST_API = {
221
221
  FIND_ALL: `${exports.ROOT}/${CONTROLLERS.PROMPT_PUBLIC_CONTROLLER}/${CONTROLLERS.PROMPT_ROUTES.FIND_ALL}`,
222
222
  FIND: (topicId) => `${exports.ROOT}/${CONTROLLERS.PROMPT_PUBLIC_CONTROLLER}/${CONTROLLERS.PROMPT_ROUTES.FIND(topicId)}`,
223
223
  },
224
+ FOLDER_PRIVATE: {
225
+ FIND_BY_UUID: (uuid) => `${exports.ROOT}/${CONTROLLERS.FOLDER_PRIVATE_CONTROLLER}/${CONTROLLERS.FOLDER_ROUTES.FIND_BY_UUID(uuid)}`,
226
+ FIND_BY_UUID_WITH_CHATS: (uuid) => `${exports.ROOT}/${CONTROLLERS.FOLDER_PRIVATE_CONTROLLER}/${CONTROLLERS.FOLDER_ROUTES.FIND_BY_UUID_WITH_CHATS(uuid)}`,
227
+ FIND_MANY_BY_USER: `${exports.ROOT}/${CONTROLLERS.FOLDER_PRIVATE_CONTROLLER}/${CONTROLLERS.FOLDER_ROUTES.FIND_MANY_BY_USER}`,
228
+ CREATE: `${exports.ROOT}/${CONTROLLERS.FOLDER_PRIVATE_CONTROLLER}/${CONTROLLERS.FOLDER_ROUTES.CREATE}`,
229
+ UPDATE: (uuid) => `${exports.ROOT}/${CONTROLLERS.FOLDER_PRIVATE_CONTROLLER}/${CONTROLLERS.FOLDER_ROUTES.UPDATE(uuid)}`,
230
+ DELETE: (uuid) => `${exports.ROOT}/${CONTROLLERS.FOLDER_PRIVATE_CONTROLLER}/${CONTROLLERS.FOLDER_ROUTES.DELETE(uuid)}`,
231
+ },
224
232
  };
@@ -8,9 +8,12 @@ var UpdateChatCommand;
8
8
  UpdateChatCommand.RequestParamsSchema = models_1.ChatSchema.pick({
9
9
  uuid: true,
10
10
  });
11
- UpdateChatCommand.RequestSchema = zod_1.z.object({
11
+ UpdateChatCommand.RequestSchema = zod_1.z
12
+ .object({
12
13
  title: zod_1.z.string().max(65),
13
- });
14
+ folderId: zod_1.z.string().uuid(),
15
+ })
16
+ .partial();
14
17
  UpdateChatCommand.ResponseSchema = zod_1.z.object({
15
18
  data: models_1.ChatSchema,
16
19
  });
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateFolderCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const models_1 = require("../../models");
6
+ var CreateFolderCommand;
7
+ (function (CreateFolderCommand) {
8
+ CreateFolderCommand.RequestSchema = models_1.FolderSchema.pick({
9
+ title: true,
10
+ prompt: true,
11
+ });
12
+ CreateFolderCommand.ResponseSchema = zod_1.z.object({
13
+ data: models_1.FolderSchema,
14
+ });
15
+ })(CreateFolderCommand || (exports.CreateFolderCommand = CreateFolderCommand = {}));
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DeleteFolderCommand = void 0;
7
+ const zod_1 = __importDefault(require("zod"));
8
+ const __1 = require("../..");
9
+ var DeleteFolderCommand;
10
+ (function (DeleteFolderCommand) {
11
+ DeleteFolderCommand.RequestSchema = __1.FolderSchema.pick({
12
+ uuid: true,
13
+ });
14
+ DeleteFolderCommand.ResponseSchema = zod_1.default.object({
15
+ data: zod_1.default.object({
16
+ isDeleted: zod_1.default.boolean(),
17
+ }),
18
+ });
19
+ })(DeleteFolderCommand || (exports.DeleteFolderCommand = DeleteFolderCommand = {}));
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FindFolderByUuidWithChatsCommand = void 0;
7
+ const zod_1 = __importDefault(require("zod"));
8
+ const models_1 = require("../../models");
9
+ var FindFolderByUuidWithChatsCommand;
10
+ (function (FindFolderByUuidWithChatsCommand) {
11
+ FindFolderByUuidWithChatsCommand.RequestParamSchema = models_1.FolderSchema.pick({
12
+ uuid: true,
13
+ });
14
+ FindFolderByUuidWithChatsCommand.RequestSchema = zod_1.default.object({
15
+ limit: zod_1.default.coerce.number().min(1),
16
+ offset: zod_1.default.coerce.number().min(0).default(0),
17
+ });
18
+ FindFolderByUuidWithChatsCommand.ResponseSchema = zod_1.default.object({
19
+ data: models_1.FolderSchema.extend({
20
+ chats: zod_1.default.array(models_1.ChatSchema.extend({
21
+ messages: zod_1.default.array(models_1.MessageSchema),
22
+ })),
23
+ }),
24
+ page: zod_1.default.number(),
25
+ totalPages: zod_1.default.number(),
26
+ });
27
+ })(FindFolderByUuidWithChatsCommand || (exports.FindFolderByUuidWithChatsCommand = FindFolderByUuidWithChatsCommand = {}));
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FindFolderByUuidCommand = void 0;
7
+ const zod_1 = __importDefault(require("zod"));
8
+ const models_1 = require("../../models");
9
+ var FindFolderByUuidCommand;
10
+ (function (FindFolderByUuidCommand) {
11
+ FindFolderByUuidCommand.RequestSchema = models_1.FolderSchema.pick({
12
+ uuid: true,
13
+ });
14
+ FindFolderByUuidCommand.ResponseSchema = zod_1.default.object({
15
+ data: models_1.FolderSchema,
16
+ });
17
+ })(FindFolderByUuidCommand || (exports.FindFolderByUuidCommand = FindFolderByUuidCommand = {}));
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FindFoldersByUserCommand = void 0;
7
+ const zod_1 = __importDefault(require("zod"));
8
+ const models_1 = require("../../models");
9
+ var FindFoldersByUserCommand;
10
+ (function (FindFoldersByUserCommand) {
11
+ FindFoldersByUserCommand.RequestSchema = zod_1.default.object({
12
+ limit: zod_1.default.coerce.number().min(1),
13
+ offset: zod_1.default.coerce.number().min(0).default(0),
14
+ });
15
+ FindFoldersByUserCommand.ResponseSchema = zod_1.default.object({
16
+ data: zod_1.default.array(models_1.FolderSchema),
17
+ page: zod_1.default.number(),
18
+ totalPages: zod_1.default.number(),
19
+ });
20
+ })(FindFoldersByUserCommand || (exports.FindFoldersByUserCommand = FindFoldersByUserCommand = {}));
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./create-folder.command"), exports);
18
+ __exportStar(require("./delete-folder.command"), exports);
19
+ __exportStar(require("./find-folders-by-user.command"), exports);
20
+ __exportStar(require("./find-folder-by-uuid.command"), exports);
21
+ __exportStar(require("./update-folder.command"), exports);
22
+ __exportStar(require("./find-folder-by-uuid-with-chats.command"), exports);
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UpdateFolderCommand = void 0;
4
+ const zod_1 = require("zod");
5
+ const models_1 = require("../../models");
6
+ var UpdateFolderCommand;
7
+ (function (UpdateFolderCommand) {
8
+ UpdateFolderCommand.RequestParamSchema = models_1.FolderSchema.pick({
9
+ uuid: true,
10
+ });
11
+ UpdateFolderCommand.RequestSchema = models_1.FolderSchema.pick({
12
+ title: true,
13
+ prompt: true,
14
+ }).partial();
15
+ UpdateFolderCommand.ResponseSchema = zod_1.z.object({
16
+ data: models_1.FolderSchema,
17
+ });
18
+ })(UpdateFolderCommand || (exports.UpdateFolderCommand = UpdateFolderCommand = {}));
@@ -49,3 +49,4 @@ __exportStar(require("./review"), exports);
49
49
  __exportStar(require("./prompt-category"), exports);
50
50
  __exportStar(require("./prompt-topic"), exports);
51
51
  __exportStar(require("./prompt"), exports);
52
+ __exportStar(require("./folder"), exports);
@@ -1152,11 +1152,11 @@ exports.ERRORS = {
1152
1152
  WEB_SEARCH_NOT_AVAILABLE_TO_USER: {
1153
1153
  code: 'A255',
1154
1154
  message: 'Поиск в интернете не доступен данному пользователю',
1155
- httpCode: 403,
1155
+ httpCode: 400,
1156
1156
  },
1157
1157
  CHAT_FILE_ATTACHMENT_NOT_ALLOWED: {
1158
1158
  code: 'A256',
1159
- message: 'Незарегистрированный юзер не может прикреплять файлы',
1159
+ message: 'Незарегистрированный пользователь не может прикреплять файлы',
1160
1160
  httpCode: 400,
1161
1161
  },
1162
1162
  STT_CONFIG_ERROR: {
@@ -1438,4 +1438,39 @@ exports.ERRORS = {
1438
1438
  message: 'Произошла ошибка при построении списка функций подписки',
1439
1439
  httpCode: 500,
1440
1440
  },
1441
+ FOLDER_DELETE_ERROR: {
1442
+ code: 'A311',
1443
+ message: 'Папка не была удалена',
1444
+ httpCode: 500,
1445
+ },
1446
+ FOLDER_CREATE_ERROR: {
1447
+ code: 'A312',
1448
+ message: 'Папка не был создана',
1449
+ httpCode: 500,
1450
+ },
1451
+ FOLDER_FIND_ERROR: {
1452
+ code: 'A313',
1453
+ message: 'Папка не найдена',
1454
+ httpCode: 404,
1455
+ },
1456
+ FOLDERS_FIND_ERROR: {
1457
+ code: 'A314',
1458
+ message: 'Папки не найдены',
1459
+ httpCode: 404,
1460
+ },
1461
+ FOLDER_UPDATE_ERROR: {
1462
+ code: 'A315',
1463
+ message: 'Папка не был обновлена',
1464
+ httpCode: 500,
1465
+ },
1466
+ FOLDER_OWNERSHIP_ERROR: {
1467
+ code: 'A316',
1468
+ message: 'Юзер не является владельцем папки',
1469
+ httpCode: 400,
1470
+ },
1471
+ CHECK_USER_HAS_ACTIVE_SUBSCRIPTION_OR_PRODUCT_ERROR: {
1472
+ code: 'A317',
1473
+ message: 'Произошла ошибка при проверке наличия активной подписки или пакета у пользователя',
1474
+ httpCode: 500,
1475
+ },
1441
1476
  };
@@ -10,6 +10,7 @@ exports.AiModelSchema = zod_1.z.object({
10
10
  description: zod_1.z.nullable(zod_1.z.string()),
11
11
  isPremium: zod_1.z.boolean(),
12
12
  tokenMultiplicator: zod_1.z.number(),
13
+ freeTokenMultiplicator: zod_1.z.number(),
13
14
  order: zod_1.z.number(),
14
15
  canUse: zod_1.z.optional(zod_1.z.boolean()),
15
16
  status: zod_1.z.nativeEnum(constants_1.AI_MODEL_STATUS),
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FolderSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.FolderSchema = zod_1.z.object({
6
+ uuid: zod_1.z.string().uuid(),
7
+ title: zod_1.z.string(),
8
+ prompt: zod_1.z.string(),
9
+ userId: zod_1.z.string().uuid(),
10
+ createdAt: zod_1.z.date(),
11
+ updatedAt: zod_1.z.date(),
12
+ });
@@ -61,3 +61,4 @@ __exportStar(require("./review.schema"), exports);
61
61
  __exportStar(require("./prompt-category.schema"), exports);
62
62
  __exportStar(require("./prompt-topic.schema"), exports);
63
63
  __exportStar(require("./prompt.schema"), exports);
64
+ __exportStar(require("./folder.schema"), exports);
@@ -7,9 +7,13 @@ export namespace UpdateChatCommand {
7
7
  });
8
8
  export type RequestParams = z.infer<typeof RequestParamsSchema>;
9
9
 
10
- export const RequestSchema = z.object({
11
- title: z.string().max(65),
12
- });
10
+ export const RequestSchema = z
11
+ .object({
12
+ title: z.string().max(65),
13
+ folderId: z.string().uuid(),
14
+ })
15
+ .partial();
16
+
13
17
  export type RequestBody = z.infer<typeof RequestSchema>;
14
18
 
15
19
  export const ResponseSchema = z.object({
@@ -0,0 +1,17 @@
1
+ import { z } from 'zod';
2
+ import { FolderSchema } from '../../models';
3
+
4
+ export namespace CreateFolderCommand {
5
+ export const RequestSchema = FolderSchema.pick({
6
+ title: true,
7
+ prompt: true,
8
+ });
9
+
10
+ export type Request = z.infer<typeof RequestSchema>;
11
+
12
+ export const ResponseSchema = z.object({
13
+ data: FolderSchema,
14
+ });
15
+
16
+ export type Response = z.infer<typeof ResponseSchema>;
17
+ }
@@ -0,0 +1,18 @@
1
+ import z from 'zod';
2
+ import { FolderSchema } from '../..';
3
+
4
+ export namespace DeleteFolderCommand {
5
+ export const RequestSchema = FolderSchema.pick({
6
+ uuid: true,
7
+ });
8
+
9
+ export type Request = z.infer<typeof RequestSchema>;
10
+
11
+ export const ResponseSchema = z.object({
12
+ data: z.object({
13
+ isDeleted: z.boolean(),
14
+ }),
15
+ });
16
+
17
+ export type Response = z.infer<typeof ResponseSchema>;
18
+ }
@@ -0,0 +1,31 @@
1
+ import z from 'zod';
2
+ import { ChatSchema, FolderSchema, MessageSchema } from '../../models';
3
+
4
+ export namespace FindFolderByUuidWithChatsCommand {
5
+ export const RequestParamSchema = FolderSchema.pick({
6
+ uuid: true,
7
+ });
8
+
9
+ export type RequestParam = z.infer<typeof RequestParamSchema>;
10
+
11
+ export const RequestSchema = z.object({
12
+ limit: z.coerce.number().min(1),
13
+ offset: z.coerce.number().min(0).default(0),
14
+ });
15
+
16
+ export type Request = z.infer<typeof RequestSchema>;
17
+
18
+ export const ResponseSchema = z.object({
19
+ data: FolderSchema.extend({
20
+ chats: z.array(
21
+ ChatSchema.extend({
22
+ messages: z.array(MessageSchema),
23
+ }),
24
+ ),
25
+ }),
26
+ page: z.number(),
27
+ totalPages: z.number(),
28
+ });
29
+
30
+ export type Response = z.infer<typeof ResponseSchema>;
31
+ }
@@ -0,0 +1,16 @@
1
+ import z from 'zod';
2
+ import { FolderSchema } from '../../models';
3
+
4
+ export namespace FindFolderByUuidCommand {
5
+ export const RequestSchema = FolderSchema.pick({
6
+ uuid: true,
7
+ });
8
+
9
+ export type Request = z.infer<typeof RequestSchema>;
10
+
11
+ export const ResponseSchema = z.object({
12
+ data: FolderSchema,
13
+ });
14
+
15
+ export type Response = z.infer<typeof ResponseSchema>;
16
+ }
@@ -0,0 +1,19 @@
1
+ import z from 'zod';
2
+ import { FolderSchema } from '../../models';
3
+
4
+ export namespace FindFoldersByUserCommand {
5
+ export const RequestSchema = z.object({
6
+ limit: z.coerce.number().min(1),
7
+ offset: z.coerce.number().min(0).default(0),
8
+ });
9
+
10
+ export type Request = z.infer<typeof RequestSchema>;
11
+
12
+ export const ResponseSchema = z.object({
13
+ data: z.array(FolderSchema),
14
+ page: z.number(),
15
+ totalPages: z.number(),
16
+ });
17
+
18
+ export type Response = z.infer<typeof ResponseSchema>;
19
+ }
@@ -0,0 +1,6 @@
1
+ export * from './create-folder.command';
2
+ export * from './delete-folder.command';
3
+ export * from './find-folders-by-user.command';
4
+ export * from './find-folder-by-uuid.command';
5
+ export * from './update-folder.command';
6
+ export * from './find-folder-by-uuid-with-chats.command';
@@ -0,0 +1,23 @@
1
+ import { z } from 'zod';
2
+ import { FolderSchema } from '../../models';
3
+
4
+ export namespace UpdateFolderCommand {
5
+ export const RequestParamSchema = FolderSchema.pick({
6
+ uuid: true,
7
+ });
8
+
9
+ export type RequestParam = z.infer<typeof RequestParamSchema>;
10
+
11
+ export const RequestSchema = FolderSchema.pick({
12
+ title: true,
13
+ prompt: true,
14
+ }).partial();
15
+
16
+ export type Request = z.infer<typeof RequestSchema>;
17
+
18
+ export const ResponseSchema = z.object({
19
+ data: FolderSchema,
20
+ });
21
+
22
+ export type Response = z.infer<typeof ResponseSchema>;
23
+ }
package/commands/index.ts CHANGED
@@ -33,3 +33,4 @@ export * from './review';
33
33
  export * from './prompt-category';
34
34
  export * from './prompt-topic';
35
35
  export * from './prompt';
36
+ export * from './folder';
@@ -1158,11 +1158,11 @@ export const ERRORS = {
1158
1158
  WEB_SEARCH_NOT_AVAILABLE_TO_USER: {
1159
1159
  code: 'A255',
1160
1160
  message: 'Поиск в интернете не доступен данному пользователю',
1161
- httpCode: 403,
1161
+ httpCode: 400,
1162
1162
  },
1163
1163
  CHAT_FILE_ATTACHMENT_NOT_ALLOWED: {
1164
1164
  code: 'A256',
1165
- message: 'Незарегистрированный юзер не может прикреплять файлы',
1165
+ message: 'Незарегистрированный пользователь не может прикреплять файлы',
1166
1166
  httpCode: 400,
1167
1167
  },
1168
1168
  STT_CONFIG_ERROR: {
@@ -1444,4 +1444,40 @@ export const ERRORS = {
1444
1444
  message: 'Произошла ошибка при построении списка функций подписки',
1445
1445
  httpCode: 500,
1446
1446
  },
1447
+ FOLDER_DELETE_ERROR: {
1448
+ code: 'A311',
1449
+ message: 'Папка не была удалена',
1450
+ httpCode: 500,
1451
+ },
1452
+ FOLDER_CREATE_ERROR: {
1453
+ code: 'A312',
1454
+ message: 'Папка не был создана',
1455
+ httpCode: 500,
1456
+ },
1457
+ FOLDER_FIND_ERROR: {
1458
+ code: 'A313',
1459
+ message: 'Папка не найдена',
1460
+ httpCode: 404,
1461
+ },
1462
+ FOLDERS_FIND_ERROR: {
1463
+ code: 'A314',
1464
+ message: 'Папки не найдены',
1465
+ httpCode: 404,
1466
+ },
1467
+ FOLDER_UPDATE_ERROR: {
1468
+ code: 'A315',
1469
+ message: 'Папка не был обновлена',
1470
+ httpCode: 500,
1471
+ },
1472
+ FOLDER_OWNERSHIP_ERROR: {
1473
+ code: 'A316',
1474
+ message: 'Юзер не является владельцем папки',
1475
+ httpCode: 400,
1476
+ },
1477
+ CHECK_USER_HAS_ACTIVE_SUBSCRIPTION_OR_PRODUCT_ERROR: {
1478
+ code: 'A317',
1479
+ message:
1480
+ 'Произошла ошибка при проверке наличия активной подписки или пакета у пользователя',
1481
+ httpCode: 500,
1482
+ },
1447
1483
  };
@@ -13,6 +13,7 @@ export const AiModelSchema = z.object({
13
13
  description: z.nullable(z.string()),
14
14
  isPremium: z.boolean(),
15
15
  tokenMultiplicator: z.number(),
16
+ freeTokenMultiplicator: z.number(),
16
17
  order: z.number(),
17
18
  canUse: z.optional(z.boolean()),
18
19
  status: z.nativeEnum(AI_MODEL_STATUS),
@@ -0,0 +1,10 @@
1
+ import { z } from 'zod';
2
+
3
+ export const FolderSchema = z.object({
4
+ uuid: z.string().uuid(),
5
+ title: z.string(),
6
+ prompt: z.string(),
7
+ userId: z.string().uuid(),
8
+ createdAt: z.date(),
9
+ updatedAt: z.date(),
10
+ });
package/models/index.ts CHANGED
@@ -45,3 +45,4 @@ export * from './review.schema';
45
45
  export * from './prompt-category.schema';
46
46
  export * from './prompt-topic.schema';
47
47
  export * from './prompt.schema';
48
+ export * from './folder.schema';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@purpleschool/gptbot",
3
- "version": "0.6.2",
3
+ "version": "0.6.4",
4
4
  "description": "",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",