@zyacreatives/shared 2.1.77 → 2.1.78
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.
- package/dist/schemas/brand.d.ts +5 -14
- package/dist/schemas/brand.js +6 -45
- package/dist/schemas/creative.d.ts +5 -14
- package/dist/schemas/creative.js +4 -42
- package/dist/schemas/user.d.ts +4 -0
- package/dist/types/brand.d.ts +1 -2
- package/dist/types/creative.d.ts +1 -2
- package/package.json +1 -1
- package/src/schemas/brand.ts +110 -158
- package/src/schemas/creative.ts +180 -236
- package/src/types/brand.ts +0 -3
- package/src/types/creative.ts +0 -3
package/dist/schemas/brand.d.ts
CHANGED
|
@@ -32,26 +32,13 @@ export declare const BrandEntitySchema: z.ZodObject<{
|
|
|
32
32
|
}, z.core.$strip>>>;
|
|
33
33
|
createdAt: z.ZodCoercedDate<unknown>;
|
|
34
34
|
updatedAt: z.ZodCoercedDate<unknown>;
|
|
35
|
-
|
|
36
|
-
export declare const ListBrandsInputSchema: z.ZodObject<{
|
|
37
|
-
query: z.ZodOptional<z.ZodString>;
|
|
38
|
-
disciplines: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
39
|
-
experienceLevels: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
40
|
-
"0-1 year": "0-1 year";
|
|
41
|
-
"1-3 years": "1-3 years";
|
|
42
|
-
"3-5 years": "3-5 years";
|
|
43
|
-
"5+ years": "5+ years";
|
|
44
|
-
}>>>;
|
|
45
|
-
location: z.ZodOptional<z.ZodString>;
|
|
46
|
-
page: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
47
|
-
perPage: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
35
|
+
version: z.ZodInt;
|
|
48
36
|
}, z.core.$strip>;
|
|
49
37
|
export declare const CreateBrandProfileInputSchema: z.ZodObject<{
|
|
50
38
|
brandName: z.ZodString;
|
|
51
39
|
disciplineSlugs: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
52
40
|
}, z.core.$strip>;
|
|
53
41
|
export declare const UpdateBrandProfileInputSchema: z.ZodObject<{
|
|
54
|
-
expectedUpdateAt: z.ZodISODateTime;
|
|
55
42
|
brandName: z.ZodOptional<z.ZodString>;
|
|
56
43
|
links: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
57
44
|
url: z.ZodUnion<readonly [z.ZodURL, z.ZodLiteral<"">]>;
|
|
@@ -71,6 +58,7 @@ export declare const UpdateBrandProfileInputSchema: z.ZodObject<{
|
|
|
71
58
|
}, z.core.$strip>>>;
|
|
72
59
|
bio: z.ZodOptional<z.ZodString>;
|
|
73
60
|
disciplineSlugs: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
61
|
+
version: z.ZodInt;
|
|
74
62
|
}, z.core.$strip>;
|
|
75
63
|
export declare const GetBrandInputSchema: z.ZodObject<{
|
|
76
64
|
value: z.ZodCUID2;
|
|
@@ -109,6 +97,7 @@ export declare const CreateBrandOutputSchema: z.ZodObject<{
|
|
|
109
97
|
}, z.core.$strip>>>;
|
|
110
98
|
createdAt: z.ZodCoercedDate<unknown>;
|
|
111
99
|
updatedAt: z.ZodCoercedDate<unknown>;
|
|
100
|
+
version: z.ZodInt;
|
|
112
101
|
}, z.core.$strip>;
|
|
113
102
|
export declare const GetBrandOutputSchema: z.ZodObject<{
|
|
114
103
|
id: z.ZodCUID2;
|
|
@@ -134,6 +123,7 @@ export declare const GetBrandOutputSchema: z.ZodObject<{
|
|
|
134
123
|
}, z.core.$strip>>>;
|
|
135
124
|
createdAt: z.ZodCoercedDate<unknown>;
|
|
136
125
|
updatedAt: z.ZodCoercedDate<unknown>;
|
|
126
|
+
version: z.ZodInt;
|
|
137
127
|
}, z.core.$strip>;
|
|
138
128
|
export declare const UpdateBrandOutputSchema: z.ZodObject<{
|
|
139
129
|
id: z.ZodCUID2;
|
|
@@ -159,6 +149,7 @@ export declare const UpdateBrandOutputSchema: z.ZodObject<{
|
|
|
159
149
|
}, z.core.$strip>>>;
|
|
160
150
|
createdAt: z.ZodCoercedDate<unknown>;
|
|
161
151
|
updatedAt: z.ZodCoercedDate<unknown>;
|
|
152
|
+
version: z.ZodInt;
|
|
162
153
|
}, z.core.$strip>;
|
|
163
154
|
export declare const BrandWithUserEntitySchema: z.ZodObject<{
|
|
164
155
|
id: z.ZodCUID2;
|
package/dist/schemas/brand.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SearchBrandOutputSchema = exports.SearchBrandInputSchema = exports.BrandWithUserEntitySchema = exports.UpdateBrandOutputSchema = exports.GetBrandOutputSchema = exports.CreateBrandOutputSchema = exports.GetBrandQuerySchema = exports.GetBrandInputSchema = exports.UpdateBrandProfileInputSchema = exports.CreateBrandProfileInputSchema = exports.
|
|
3
|
+
exports.SearchBrandOutputSchema = exports.SearchBrandInputSchema = exports.BrandWithUserEntitySchema = exports.UpdateBrandOutputSchema = exports.GetBrandOutputSchema = exports.CreateBrandOutputSchema = exports.GetBrandQuerySchema = exports.GetBrandInputSchema = exports.UpdateBrandProfileInputSchema = exports.CreateBrandProfileInputSchema = exports.BrandEntitySchema = exports.MinimalBrandEntitySchema = void 0;
|
|
4
4
|
const zod_openapi_1 = require("@hono/zod-openapi");
|
|
5
5
|
const common_1 = require("./common");
|
|
6
6
|
const constants_1 = require("../constants");
|
|
@@ -49,46 +49,11 @@ exports.BrandEntitySchema = zod_openapi_1.z
|
|
|
49
49
|
})
|
|
50
50
|
.array()
|
|
51
51
|
.optional(),
|
|
52
|
-
createdAt: zod_openapi_1.z.coerce
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
updatedAt: zod_openapi_1.z.coerce
|
|
56
|
-
.date()
|
|
57
|
-
.openapi({ example: "2025-10-13T09:00:00.000Z" }),
|
|
52
|
+
createdAt: zod_openapi_1.z.coerce.date().openapi({ example: "2025-10-13T09:00:00.000Z" }),
|
|
53
|
+
updatedAt: zod_openapi_1.z.coerce.date().openapi({ example: "2025-10-13T09:00:00.000Z" }),
|
|
54
|
+
version: zod_openapi_1.z.int(),
|
|
58
55
|
})
|
|
59
56
|
.openapi("BrandEntitySchema");
|
|
60
|
-
exports.ListBrandsInputSchema = zod_openapi_1.z
|
|
61
|
-
.object({
|
|
62
|
-
query: zod_openapi_1.z.string().optional().openapi({ example: "AI software brand" }),
|
|
63
|
-
disciplines: zod_openapi_1.z
|
|
64
|
-
.array(zod_openapi_1.z.string())
|
|
65
|
-
.optional()
|
|
66
|
-
.openapi({ example: ["design", "marketing"] }),
|
|
67
|
-
experienceLevels: zod_openapi_1.z
|
|
68
|
-
.array(zod_openapi_1.z.enum(Object.values(constants_1.EXPERIENCE_LEVELS)))
|
|
69
|
-
.optional()
|
|
70
|
-
.openapi({
|
|
71
|
-
example: ["SENIOR", "EXPERT"],
|
|
72
|
-
description: "Filter based on the required experience level of partners.",
|
|
73
|
-
}),
|
|
74
|
-
location: zod_openapi_1.z.string().optional().openapi({ example: "San Francisco" }),
|
|
75
|
-
page: zod_openapi_1.z
|
|
76
|
-
.number()
|
|
77
|
-
.int()
|
|
78
|
-
.min(1)
|
|
79
|
-
.default(1)
|
|
80
|
-
.optional()
|
|
81
|
-
.openapi({ example: 1 }),
|
|
82
|
-
perPage: zod_openapi_1.z
|
|
83
|
-
.number()
|
|
84
|
-
.int()
|
|
85
|
-
.min(1)
|
|
86
|
-
.max(100)
|
|
87
|
-
.default(20)
|
|
88
|
-
.optional()
|
|
89
|
-
.openapi({ example: 20 }),
|
|
90
|
-
})
|
|
91
|
-
.openapi("ListBrandsInput");
|
|
92
57
|
exports.CreateBrandProfileInputSchema = zod_openapi_1.z
|
|
93
58
|
.object({
|
|
94
59
|
brandName: zod_openapi_1.z
|
|
@@ -106,12 +71,7 @@ exports.CreateBrandProfileInputSchema = zod_openapi_1.z
|
|
|
106
71
|
});
|
|
107
72
|
exports.UpdateBrandProfileInputSchema = zod_openapi_1.z
|
|
108
73
|
.object({
|
|
109
|
-
|
|
110
|
-
brandName: zod_openapi_1.z
|
|
111
|
-
.string()
|
|
112
|
-
.min(1)
|
|
113
|
-
.optional()
|
|
114
|
-
.openapi({ example: "Acme Studio" }),
|
|
74
|
+
brandName: zod_openapi_1.z.string().min(1).optional().openapi({ example: "Acme Studio" }),
|
|
115
75
|
links: zod_openapi_1.z
|
|
116
76
|
.object({
|
|
117
77
|
url: zod_openapi_1.z.union([
|
|
@@ -140,6 +100,7 @@ exports.UpdateBrandProfileInputSchema = zod_openapi_1.z
|
|
|
140
100
|
.min(1, "At least one discipline is required")
|
|
141
101
|
.optional()
|
|
142
102
|
.openapi({ example: ["frontend", "ui-ux"] }),
|
|
103
|
+
version: zod_openapi_1.z.int(),
|
|
143
104
|
})
|
|
144
105
|
.openapi({
|
|
145
106
|
title: "update brand profile",
|
|
@@ -20,6 +20,7 @@ export declare const CreativeEntitySchema: z.ZodObject<{
|
|
|
20
20
|
userId: z.ZodCUID2;
|
|
21
21
|
bio: z.ZodOptional<z.ZodString>;
|
|
22
22
|
role: z.ZodOptional<z.ZodString>;
|
|
23
|
+
version: z.ZodInt;
|
|
23
24
|
location: z.ZodOptional<z.ZodString>;
|
|
24
25
|
experienceLevel: z.ZodOptional<z.ZodEnum<{
|
|
25
26
|
"0-1 year": "0-1 year";
|
|
@@ -55,19 +56,6 @@ export declare const CreativeEntitySchema: z.ZodObject<{
|
|
|
55
56
|
createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
56
57
|
updatedAt: z.ZodCoercedDate<unknown>;
|
|
57
58
|
}, z.core.$strip>;
|
|
58
|
-
export declare const ListCreativesInputSchema: z.ZodObject<{
|
|
59
|
-
query: z.ZodOptional<z.ZodString>;
|
|
60
|
-
disciplines: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
61
|
-
experienceLevels: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
62
|
-
"0-1 year": "0-1 year";
|
|
63
|
-
"1-3 years": "1-3 years";
|
|
64
|
-
"3-5 years": "3-5 years";
|
|
65
|
-
"5+ years": "5+ years";
|
|
66
|
-
}>>>;
|
|
67
|
-
location: z.ZodOptional<z.ZodString>;
|
|
68
|
-
page: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
69
|
-
perPage: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
70
|
-
}, z.core.$strip>;
|
|
71
59
|
export declare const CreateCreativeProfileInputSchema: z.ZodObject<{
|
|
72
60
|
experienceLevel: z.ZodDefault<z.ZodEnum<{
|
|
73
61
|
readonly YEAR_0_1: "0-1 year";
|
|
@@ -80,7 +68,6 @@ export declare const CreateCreativeProfileInputSchema: z.ZodObject<{
|
|
|
80
68
|
disciplineSlugs: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
81
69
|
}, z.core.$strip>;
|
|
82
70
|
export declare const UpdateCreativeProfileInputSchema: z.ZodObject<{
|
|
83
|
-
expectedUpdateAt: z.ZodISODateTime;
|
|
84
71
|
experienceLevel: z.ZodOptional<z.ZodEnum<{
|
|
85
72
|
readonly YEAR_0_1: "0-1 year";
|
|
86
73
|
readonly YEAR_1_3: "1-3 years";
|
|
@@ -110,6 +97,7 @@ export declare const UpdateCreativeProfileInputSchema: z.ZodObject<{
|
|
|
110
97
|
readonly GENERIC_WEBSITE: "Generic Website";
|
|
111
98
|
}>;
|
|
112
99
|
}, z.core.$strip>>>;
|
|
100
|
+
version: z.ZodInt;
|
|
113
101
|
achievements: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
114
102
|
title: z.ZodString;
|
|
115
103
|
link: z.ZodOptional<z.ZodString>;
|
|
@@ -134,6 +122,7 @@ export declare const CreateCreativeOutputSchema: z.ZodObject<{
|
|
|
134
122
|
userId: z.ZodCUID2;
|
|
135
123
|
bio: z.ZodOptional<z.ZodString>;
|
|
136
124
|
role: z.ZodOptional<z.ZodString>;
|
|
125
|
+
version: z.ZodInt;
|
|
137
126
|
location: z.ZodOptional<z.ZodString>;
|
|
138
127
|
experienceLevel: z.ZodOptional<z.ZodEnum<{
|
|
139
128
|
"0-1 year": "0-1 year";
|
|
@@ -174,6 +163,7 @@ export declare const GetCreativeOutputSchema: z.ZodObject<{
|
|
|
174
163
|
userId: z.ZodCUID2;
|
|
175
164
|
bio: z.ZodOptional<z.ZodString>;
|
|
176
165
|
role: z.ZodOptional<z.ZodString>;
|
|
166
|
+
version: z.ZodInt;
|
|
177
167
|
location: z.ZodOptional<z.ZodString>;
|
|
178
168
|
experienceLevel: z.ZodOptional<z.ZodEnum<{
|
|
179
169
|
"0-1 year": "0-1 year";
|
|
@@ -214,6 +204,7 @@ export declare const UpdateCreativeOutputSchema: z.ZodObject<{
|
|
|
214
204
|
userId: z.ZodCUID2;
|
|
215
205
|
bio: z.ZodOptional<z.ZodString>;
|
|
216
206
|
role: z.ZodOptional<z.ZodString>;
|
|
207
|
+
version: z.ZodInt;
|
|
217
208
|
location: z.ZodOptional<z.ZodString>;
|
|
218
209
|
experienceLevel: z.ZodOptional<z.ZodEnum<{
|
|
219
210
|
"0-1 year": "0-1 year";
|
package/dist/schemas/creative.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SearchCreativeOutputSchema = exports.SearchCreativeInputSchema = exports.CreativeWithUserEntitySchema = exports.UpdateCreativeOutputSchema = exports.GetCreativeOutputSchema = exports.CreateCreativeOutputSchema = exports.GetCreativeQuerySchema = exports.GetCreativeInputSchema = exports.UpdateCreativeProfileInputSchema = exports.CreateCreativeProfileInputSchema = exports.
|
|
3
|
+
exports.SearchCreativeOutputSchema = exports.SearchCreativeInputSchema = exports.CreativeWithUserEntitySchema = exports.UpdateCreativeOutputSchema = exports.GetCreativeOutputSchema = exports.CreateCreativeOutputSchema = exports.GetCreativeQuerySchema = exports.GetCreativeInputSchema = exports.UpdateCreativeProfileInputSchema = exports.CreateCreativeProfileInputSchema = exports.CreativeEntitySchema = exports.MinimalCreativeEntitySchema = void 0;
|
|
4
4
|
const zod_openapi_1 = require("@hono/zod-openapi");
|
|
5
5
|
const constants_1 = require("../constants");
|
|
6
6
|
const common_1 = require("./common");
|
|
@@ -32,6 +32,7 @@ exports.CreativeEntitySchema = zod_openapi_1.z
|
|
|
32
32
|
example: "A multi-disciplinary designer specializing in brand identity.",
|
|
33
33
|
}),
|
|
34
34
|
role: zod_openapi_1.z.string().optional().openapi({ example: "Designer" }),
|
|
35
|
+
version: zod_openapi_1.z.int(),
|
|
35
36
|
location: zod_openapi_1.z.string().optional().openapi({ example: "London, UK" }),
|
|
36
37
|
experienceLevel: zod_openapi_1.z
|
|
37
38
|
.enum(Object.values(constants_1.EXPERIENCE_LEVELS))
|
|
@@ -74,51 +75,12 @@ exports.CreativeEntitySchema = zod_openapi_1.z
|
|
|
74
75
|
.date()
|
|
75
76
|
.optional()
|
|
76
77
|
.openapi({ example: "2025-10-13T09:00:00.000Z" }),
|
|
77
|
-
updatedAt: zod_openapi_1.z.coerce
|
|
78
|
-
.date()
|
|
79
|
-
.openapi({ example: "2025-10-13T09:00:00.000Z" }),
|
|
78
|
+
updatedAt: zod_openapi_1.z.coerce.date().openapi({ example: "2025-10-13T09:00:00.000Z" }),
|
|
80
79
|
})
|
|
81
80
|
.openapi({
|
|
82
81
|
title: "CreativeEntitySchema",
|
|
83
82
|
description: "Represents a creative profile, including bio, experience level, location, disciplines and timestamps.",
|
|
84
83
|
});
|
|
85
|
-
exports.ListCreativesInputSchema = zod_openapi_1.z
|
|
86
|
-
.object({
|
|
87
|
-
query: zod_openapi_1.z.string().optional().openapi({ example: "logo designer" }),
|
|
88
|
-
disciplines: zod_openapi_1.z
|
|
89
|
-
.array(zod_openapi_1.z.string())
|
|
90
|
-
.optional()
|
|
91
|
-
.openapi({ example: ["branding", "web design"] }),
|
|
92
|
-
experienceLevels: zod_openapi_1.z
|
|
93
|
-
.array(zod_openapi_1.z.enum(Object.values(constants_1.EXPERIENCE_LEVELS)))
|
|
94
|
-
.optional()
|
|
95
|
-
.openapi({
|
|
96
|
-
example: [
|
|
97
|
-
constants_1.EXPERIENCE_LEVELS.YEAR_1_3,
|
|
98
|
-
constants_1.EXPERIENCE_LEVELS.YEAR_5_PLUS,
|
|
99
|
-
],
|
|
100
|
-
}),
|
|
101
|
-
location: zod_openapi_1.z.string().optional().openapi({ example: "Los Angeles" }),
|
|
102
|
-
page: zod_openapi_1.z
|
|
103
|
-
.number()
|
|
104
|
-
.int()
|
|
105
|
-
.min(1)
|
|
106
|
-
.default(1)
|
|
107
|
-
.optional()
|
|
108
|
-
.openapi({ example: 1 }),
|
|
109
|
-
perPage: zod_openapi_1.z
|
|
110
|
-
.number()
|
|
111
|
-
.int()
|
|
112
|
-
.min(1)
|
|
113
|
-
.max(100)
|
|
114
|
-
.default(20)
|
|
115
|
-
.optional()
|
|
116
|
-
.openapi({ example: 20 }),
|
|
117
|
-
})
|
|
118
|
-
.openapi({
|
|
119
|
-
title: "ListCreativesInput",
|
|
120
|
-
description: "Query parameters for filtering and paginating creatives. Supports text search, discipline filtering, experience level filtering, tag filtering, location filtering, and pagination settings.",
|
|
121
|
-
});
|
|
122
84
|
exports.CreateCreativeProfileInputSchema = zod_openapi_1.z
|
|
123
85
|
.object({
|
|
124
86
|
experienceLevel: zod_openapi_1.z
|
|
@@ -152,7 +114,6 @@ exports.CreateCreativeProfileInputSchema = zod_openapi_1.z
|
|
|
152
114
|
});
|
|
153
115
|
exports.UpdateCreativeProfileInputSchema = zod_openapi_1.z
|
|
154
116
|
.object({
|
|
155
|
-
expectedUpdateAt: zod_openapi_1.z.iso.datetime(),
|
|
156
117
|
experienceLevel: zod_openapi_1.z
|
|
157
118
|
.enum(constants_1.EXPERIENCE_LEVELS)
|
|
158
119
|
.optional()
|
|
@@ -194,6 +155,7 @@ exports.UpdateCreativeProfileInputSchema = zod_openapi_1.z
|
|
|
194
155
|
})
|
|
195
156
|
.array()
|
|
196
157
|
.optional(),
|
|
158
|
+
version: zod_openapi_1.z.int(),
|
|
197
159
|
achievements: zod_openapi_1.z
|
|
198
160
|
.object({
|
|
199
161
|
title: zod_openapi_1.z.string(),
|
package/dist/schemas/user.d.ts
CHANGED
|
@@ -113,12 +113,14 @@ export declare const UserProfileEntitySchema: z.ZodObject<{
|
|
|
113
113
|
}, z.core.$strip>>>;
|
|
114
114
|
createdAt: z.ZodCoercedDate<unknown>;
|
|
115
115
|
updatedAt: z.ZodCoercedDate<unknown>;
|
|
116
|
+
version: z.ZodInt;
|
|
116
117
|
}, z.core.$strip>;
|
|
117
118
|
creative: z.ZodObject<{
|
|
118
119
|
id: z.ZodCUID2;
|
|
119
120
|
userId: z.ZodCUID2;
|
|
120
121
|
bio: z.ZodOptional<z.ZodString>;
|
|
121
122
|
role: z.ZodOptional<z.ZodString>;
|
|
123
|
+
version: z.ZodInt;
|
|
122
124
|
location: z.ZodOptional<z.ZodString>;
|
|
123
125
|
experienceLevel: z.ZodOptional<z.ZodEnum<{
|
|
124
126
|
"0-1 year": "0-1 year";
|
|
@@ -593,12 +595,14 @@ export declare const GetAuthenticatedUserProfileOutputSchema: z.ZodObject<{
|
|
|
593
595
|
}, z.core.$strip>>>;
|
|
594
596
|
createdAt: z.ZodCoercedDate<unknown>;
|
|
595
597
|
updatedAt: z.ZodCoercedDate<unknown>;
|
|
598
|
+
version: z.ZodInt;
|
|
596
599
|
}, z.core.$strip>;
|
|
597
600
|
creative: z.ZodObject<{
|
|
598
601
|
id: z.ZodCUID2;
|
|
599
602
|
userId: z.ZodCUID2;
|
|
600
603
|
bio: z.ZodOptional<z.ZodString>;
|
|
601
604
|
role: z.ZodOptional<z.ZodString>;
|
|
605
|
+
version: z.ZodInt;
|
|
602
606
|
location: z.ZodOptional<z.ZodString>;
|
|
603
607
|
experienceLevel: z.ZodOptional<z.ZodEnum<{
|
|
604
608
|
"0-1 year": "0-1 year";
|
package/dist/types/brand.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { z } from "@hono/zod-openapi";
|
|
2
|
-
import { BrandEntitySchema,
|
|
2
|
+
import { BrandEntitySchema, CreateBrandProfileInputSchema, UpdateBrandProfileInputSchema, GetBrandInputSchema, CreateBrandOutputSchema, GetBrandOutputSchema, UpdateBrandOutputSchema, BrandWithUserEntitySchema, SearchBrandInputSchema, SearchBrandOutputSchema, MinimalBrandEntitySchema } from "../schemas/brand";
|
|
3
3
|
export type BrandEntity = z.infer<typeof BrandEntitySchema>;
|
|
4
|
-
export type ListBrandsInput = z.infer<typeof ListBrandsInputSchema>;
|
|
5
4
|
export type CreateBrandProfileInput = z.infer<typeof CreateBrandProfileInputSchema>;
|
|
6
5
|
export type UpdateBrandProfileInput = z.infer<typeof UpdateBrandProfileInputSchema>;
|
|
7
6
|
export type GetBrandInput = z.infer<typeof GetBrandInputSchema>;
|
package/dist/types/creative.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { z } from "@hono/zod-openapi";
|
|
2
|
-
import { CreativeEntitySchema,
|
|
2
|
+
import { CreativeEntitySchema, CreateCreativeProfileInputSchema, UpdateCreativeProfileInputSchema, GetCreativeInputSchema, CreateCreativeOutputSchema, GetCreativeOutputSchema, UpdateCreativeOutputSchema, CreativeWithUserEntitySchema, SearchCreativeInputSchema, SearchCreativeOutputSchema, MinimalCreativeEntitySchema } from "../schemas/creative";
|
|
3
3
|
export type CreativeEntity = z.infer<typeof CreativeEntitySchema>;
|
|
4
|
-
export type ListCreativesInput = z.infer<typeof ListCreativesInputSchema>;
|
|
5
4
|
export type CreateCreativeProfileInput = z.infer<typeof CreateCreativeProfileInputSchema>;
|
|
6
5
|
export type UpdateCreativeProfileInput = z.infer<typeof UpdateCreativeProfileInputSchema>;
|
|
7
6
|
export type GetCreativeInput = z.infer<typeof GetCreativeInputSchema>;
|
package/package.json
CHANGED
package/src/schemas/brand.ts
CHANGED
|
@@ -1,165 +1,117 @@
|
|
|
1
1
|
import { z } from "@hono/zod-openapi";
|
|
2
2
|
import { ProfileIdentifierSchema } from "./common";
|
|
3
|
-
import {
|
|
3
|
+
import { LINK_TYPES } from "../constants";
|
|
4
4
|
import { MinimalUserSchema } from "./user";
|
|
5
5
|
|
|
6
6
|
export const MinimalBrandEntitySchema = z.object({
|
|
7
|
+
id: z.cuid2().openapi({ example: "brd_cksd0v6q0000s9a5y8z7p3x9" }),
|
|
8
|
+
userId: z.cuid2().openapi({ example: "user_owner_123" }),
|
|
9
|
+
brandName: z.string().openapi({ example: "TechInnovate Inc." }),
|
|
10
|
+
bio: z.string().optional().openapi({
|
|
11
|
+
example: "Leading software development firm focused on AI.",
|
|
12
|
+
}),
|
|
13
|
+
|
|
14
|
+
disciplines: z
|
|
15
|
+
.array(z.string())
|
|
16
|
+
.optional()
|
|
17
|
+
.openapi({ example: ["Marketing", "Product Development"] }),
|
|
18
|
+
createdAt: z.coerce
|
|
19
|
+
.date()
|
|
20
|
+
.optional()
|
|
21
|
+
.openapi({ example: "2025-10-13T09:00:00.000Z" }),
|
|
22
|
+
updatedAt: z.coerce.date().openapi({ example: "2025-10-13T09:00:00.000Z" }),
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
export const BrandEntitySchema = z
|
|
26
|
+
.object({
|
|
7
27
|
id: z.cuid2().openapi({ example: "brd_cksd0v6q0000s9a5y8z7p3x9" }),
|
|
8
28
|
userId: z.cuid2().openapi({ example: "user_owner_123" }),
|
|
9
29
|
brandName: z.string().openapi({ example: "TechInnovate Inc." }),
|
|
10
30
|
bio: z.string().optional().openapi({
|
|
11
|
-
|
|
31
|
+
example: "Leading software development firm focused on AI.",
|
|
12
32
|
}),
|
|
13
|
-
|
|
14
33
|
disciplines: z
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
createdAt: z.coerce
|
|
19
|
-
.date()
|
|
20
|
-
.optional()
|
|
21
|
-
.openapi({ example: "2025-10-13T09:00:00.000Z" }),
|
|
22
|
-
updatedAt: z.coerce.date().openapi({ example: "2025-10-13T09:00:00.000Z" }),
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
export const BrandEntitySchema = z
|
|
26
|
-
.object({
|
|
27
|
-
id: z.cuid2().openapi({ example: "brd_cksd0v6q0000s9a5y8z7p3x9" }),
|
|
28
|
-
userId: z.cuid2().openapi({ example: "user_owner_123" }),
|
|
29
|
-
brandName: z.string().openapi({ example: "TechInnovate Inc." }),
|
|
30
|
-
bio: z.string().optional().openapi({
|
|
31
|
-
example: "Leading software development firm focused on AI.",
|
|
32
|
-
}),
|
|
33
|
-
disciplines: z
|
|
34
|
-
.array(z.string())
|
|
35
|
-
.optional()
|
|
36
|
-
.openapi({ example: ["Marketing", "Product Development"] }),
|
|
34
|
+
.array(z.string())
|
|
35
|
+
.optional()
|
|
36
|
+
.openapi({ example: ["Marketing", "Product Development"] }),
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
.openapi({ example: "2025-10-13T09:00:00.000Z" }),
|
|
59
|
-
})
|
|
60
|
-
.openapi("BrandEntitySchema");
|
|
61
|
-
|
|
62
|
-
export const ListBrandsInputSchema = z
|
|
63
|
-
.object({
|
|
64
|
-
query: z.string().optional().openapi({ example: "AI software brand" }),
|
|
65
|
-
disciplines: z
|
|
66
|
-
.array(z.string())
|
|
67
|
-
.optional()
|
|
68
|
-
.openapi({ example: ["design", "marketing"] }),
|
|
69
|
-
experienceLevels: z
|
|
70
|
-
.array(
|
|
71
|
-
z.enum(
|
|
72
|
-
Object.values(EXPERIENCE_LEVELS) as [
|
|
73
|
-
ExperienceLevel,
|
|
74
|
-
...ExperienceLevel[],
|
|
75
|
-
],
|
|
76
|
-
),
|
|
77
|
-
)
|
|
78
|
-
.optional()
|
|
79
|
-
.openapi({
|
|
80
|
-
example: ["SENIOR", "EXPERT"],
|
|
81
|
-
description:
|
|
82
|
-
"Filter based on the required experience level of partners.",
|
|
83
|
-
}),
|
|
84
|
-
location: z.string().optional().openapi({ example: "San Francisco" }),
|
|
85
|
-
page: z
|
|
86
|
-
.number()
|
|
87
|
-
.int()
|
|
88
|
-
.min(1)
|
|
89
|
-
.default(1)
|
|
90
|
-
.optional()
|
|
91
|
-
.openapi({ example: 1 }),
|
|
92
|
-
perPage: z
|
|
93
|
-
.number()
|
|
94
|
-
.int()
|
|
95
|
-
.min(1)
|
|
96
|
-
.max(100)
|
|
97
|
-
.default(20)
|
|
98
|
-
.optional()
|
|
99
|
-
.openapi({ example: 20 }),
|
|
100
|
-
})
|
|
101
|
-
.openapi("ListBrandsInput");
|
|
38
|
+
links: z
|
|
39
|
+
.object({
|
|
40
|
+
url: z.url(),
|
|
41
|
+
type: z.enum(LINK_TYPES).default(LINK_TYPES.GENERIC_WEBSITE),
|
|
42
|
+
})
|
|
43
|
+
.array()
|
|
44
|
+
.optional(),
|
|
45
|
+
achievements: z
|
|
46
|
+
.object({
|
|
47
|
+
title: z.string(),
|
|
48
|
+
link: z.url().optional(),
|
|
49
|
+
year: z.number().int().optional(),
|
|
50
|
+
})
|
|
51
|
+
.array()
|
|
52
|
+
.optional(),
|
|
53
|
+
createdAt: z.coerce.date().openapi({ example: "2025-10-13T09:00:00.000Z" }),
|
|
54
|
+
updatedAt: z.coerce.date().openapi({ example: "2025-10-13T09:00:00.000Z" }),
|
|
55
|
+
version: z.int(),
|
|
56
|
+
})
|
|
57
|
+
.openapi("BrandEntitySchema");
|
|
102
58
|
|
|
103
59
|
export const CreateBrandProfileInputSchema = z
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
60
|
+
.object({
|
|
61
|
+
brandName: z
|
|
62
|
+
.string()
|
|
63
|
+
.min(1, "Brand name is required")
|
|
64
|
+
.openapi({ example: "Acme Creative Studio" }),
|
|
65
|
+
disciplineSlugs: z
|
|
66
|
+
.array(z.string())
|
|
67
|
+
.min(1, "At least one discipline is required")
|
|
68
|
+
.default([])
|
|
69
|
+
.openapi({ example: ["ui-ux", "frontend"] }),
|
|
70
|
+
})
|
|
71
|
+
.openapi({
|
|
72
|
+
title: "create brand profile",
|
|
73
|
+
});
|
|
118
74
|
|
|
119
75
|
export const UpdateBrandProfileInputSchema = z
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
})
|
|
156
|
-
.openapi({
|
|
157
|
-
title: "update brand profile",
|
|
158
|
-
});
|
|
76
|
+
.object({
|
|
77
|
+
brandName: z.string().min(1).optional().openapi({ example: "Acme Studio" }),
|
|
78
|
+
links: z
|
|
79
|
+
.object({
|
|
80
|
+
url: z.union([
|
|
81
|
+
z.url({ message: "Please enter a valid URL" }),
|
|
82
|
+
z.literal(""),
|
|
83
|
+
]),
|
|
84
|
+
type: z.enum(LINK_TYPES),
|
|
85
|
+
})
|
|
86
|
+
.array()
|
|
87
|
+
.optional(),
|
|
88
|
+
achievements: z
|
|
89
|
+
.object({
|
|
90
|
+
title: z.string(),
|
|
91
|
+
link: z.url().optional(),
|
|
92
|
+
year: z.number().int().optional(),
|
|
93
|
+
})
|
|
94
|
+
.array()
|
|
95
|
+
.optional(),
|
|
96
|
+
bio: z
|
|
97
|
+
.string()
|
|
98
|
+
.max(600)
|
|
99
|
+
.optional()
|
|
100
|
+
.openapi({ example: "Updated bio for our creative agency." }),
|
|
101
|
+
disciplineSlugs: z
|
|
102
|
+
.array(z.string())
|
|
103
|
+
.min(1, "At least one discipline is required")
|
|
104
|
+
.optional()
|
|
105
|
+
.openapi({ example: ["frontend", "ui-ux"] }),
|
|
106
|
+
version: z.int(),
|
|
107
|
+
})
|
|
108
|
+
.openapi({
|
|
109
|
+
title: "update brand profile",
|
|
110
|
+
});
|
|
159
111
|
|
|
160
112
|
export const GetBrandInputSchema = z.object({
|
|
161
|
-
|
|
162
|
-
|
|
113
|
+
value: z.cuid2(),
|
|
114
|
+
by: ProfileIdentifierSchema.shape.by,
|
|
163
115
|
});
|
|
164
116
|
|
|
165
117
|
export const GetBrandQuerySchema = ProfileIdentifierSchema;
|
|
@@ -171,24 +123,24 @@ export const GetBrandOutputSchema = BrandEntitySchema;
|
|
|
171
123
|
export const UpdateBrandOutputSchema = BrandEntitySchema;
|
|
172
124
|
|
|
173
125
|
export const BrandWithUserEntitySchema = MinimalBrandEntitySchema.extend({
|
|
174
|
-
|
|
126
|
+
user: MinimalUserSchema,
|
|
175
127
|
});
|
|
176
128
|
|
|
177
129
|
export const SearchBrandInputSchema = z.object({
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
130
|
+
string: z
|
|
131
|
+
.string()
|
|
132
|
+
.min(1, { message: "Search string cannot be empty" })
|
|
133
|
+
.max(200, { message: "Search string cannot exceed 200 characters" }),
|
|
134
|
+
limit: z.coerce
|
|
135
|
+
.number()
|
|
136
|
+
.int({ message: "Limit must be an integer" })
|
|
137
|
+
.min(1, { message: "Limit must be at least 1" })
|
|
138
|
+
.max(100, { message: "Limit cannot exceed 100" })
|
|
139
|
+
.default(20),
|
|
140
|
+
cursor: z.string().optional(),
|
|
189
141
|
});
|
|
190
142
|
|
|
191
143
|
export const SearchBrandOutputSchema = z.object({
|
|
192
|
-
|
|
193
|
-
|
|
144
|
+
brands: z.array(BrandWithUserEntitySchema),
|
|
145
|
+
nextCursor: z.string().optional().nullable(),
|
|
194
146
|
});
|
package/src/schemas/creative.ts
CHANGED
|
@@ -4,246 +4,190 @@ import { ProfileIdentifierSchema } from "./common";
|
|
|
4
4
|
import { MinimalUserSchema } from "./user";
|
|
5
5
|
|
|
6
6
|
export const MinimalCreativeEntitySchema = z.object({
|
|
7
|
+
id: z.cuid2().openapi({ example: "cre_cksd0v6q0000s9a5y8z7p3x9" }),
|
|
8
|
+
userId: z.cuid2().openapi({ example: "user_abc123" }),
|
|
9
|
+
bio: z.string().optional().openapi({
|
|
10
|
+
example: "A multi-disciplinary designer specializing in brand identity.",
|
|
11
|
+
}),
|
|
12
|
+
role: z.string().optional().openapi({ example: "Designer" }),
|
|
13
|
+
location: z.string().optional().openapi({ example: "London, UK" }),
|
|
14
|
+
experienceLevel: z
|
|
15
|
+
.enum(
|
|
16
|
+
Object.values(EXPERIENCE_LEVELS) as [
|
|
17
|
+
ExperienceLevel,
|
|
18
|
+
...ExperienceLevel[],
|
|
19
|
+
],
|
|
20
|
+
)
|
|
21
|
+
.optional()
|
|
22
|
+
.openapi({ example: EXPERIENCE_LEVELS.YEAR_0_1 }),
|
|
23
|
+
|
|
24
|
+
disciplines: z
|
|
25
|
+
.array(z.string())
|
|
26
|
+
.optional()
|
|
27
|
+
.openapi({ example: ["Design", "Art Direction"] }),
|
|
28
|
+
createdAt: z.coerce.date().openapi({ example: "2025-10-13T09:00:00.000Z" }),
|
|
29
|
+
updatedAt: z.coerce.date().openapi({ example: "2025-10-13T09:00:00.000Z" }),
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
export const CreativeEntitySchema = z
|
|
33
|
+
.object({
|
|
7
34
|
id: z.cuid2().openapi({ example: "cre_cksd0v6q0000s9a5y8z7p3x9" }),
|
|
8
35
|
userId: z.cuid2().openapi({ example: "user_abc123" }),
|
|
9
36
|
bio: z.string().optional().openapi({
|
|
10
|
-
|
|
11
|
-
"A multi-disciplinary designer specializing in brand identity.",
|
|
37
|
+
example: "A multi-disciplinary designer specializing in brand identity.",
|
|
12
38
|
}),
|
|
13
39
|
role: z.string().optional().openapi({ example: "Designer" }),
|
|
40
|
+
version: z.int(),
|
|
14
41
|
location: z.string().optional().openapi({ example: "London, UK" }),
|
|
15
42
|
experienceLevel: z
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
43
|
+
.enum(
|
|
44
|
+
Object.values(EXPERIENCE_LEVELS) as [
|
|
45
|
+
ExperienceLevel,
|
|
46
|
+
...ExperienceLevel[],
|
|
47
|
+
],
|
|
48
|
+
)
|
|
49
|
+
.optional()
|
|
50
|
+
.openapi({ example: EXPERIENCE_LEVELS.YEAR_0_1 }),
|
|
24
51
|
|
|
25
52
|
disciplines: z
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
53
|
+
.array(z.string())
|
|
54
|
+
.optional()
|
|
55
|
+
.openapi({ example: ["Design", "Art Direction"] }),
|
|
56
|
+
workExperience: z
|
|
57
|
+
.object({
|
|
58
|
+
companyName: z.string(),
|
|
59
|
+
position: z.string(),
|
|
60
|
+
startDate: z.coerce.date().optional(),
|
|
61
|
+
endDate: z.coerce.date().optional(),
|
|
62
|
+
currentlyWorking: z.boolean().optional(),
|
|
63
|
+
description: z.string(),
|
|
64
|
+
})
|
|
65
|
+
.array()
|
|
66
|
+
.optional(),
|
|
67
|
+
links: z
|
|
68
|
+
.object({
|
|
69
|
+
url: z.union([
|
|
70
|
+
z.url({ message: "Please enter a valid URL" }),
|
|
71
|
+
z.literal(""),
|
|
72
|
+
]),
|
|
73
|
+
type: z.enum(LINK_TYPES),
|
|
74
|
+
})
|
|
75
|
+
.array()
|
|
76
|
+
.optional(),
|
|
77
|
+
achievements: z
|
|
78
|
+
.object({
|
|
79
|
+
title: z.string(),
|
|
80
|
+
link: z.string().optional(),
|
|
81
|
+
year: z.coerce.number().int().optional(),
|
|
82
|
+
})
|
|
83
|
+
.array()
|
|
84
|
+
.optional(),
|
|
85
|
+
createdAt: z.coerce
|
|
86
|
+
.date()
|
|
87
|
+
.optional()
|
|
88
|
+
.openapi({ example: "2025-10-13T09:00:00.000Z" }),
|
|
30
89
|
updatedAt: z.coerce.date().openapi({ example: "2025-10-13T09:00:00.000Z" }),
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
export const CreativeEntitySchema = z
|
|
34
|
-
.object({
|
|
35
|
-
id: z.cuid2().openapi({ example: "cre_cksd0v6q0000s9a5y8z7p3x9" }),
|
|
36
|
-
userId: z.cuid2().openapi({ example: "user_abc123" }),
|
|
37
|
-
bio: z.string().optional().openapi({
|
|
38
|
-
example:
|
|
39
|
-
"A multi-disciplinary designer specializing in brand identity.",
|
|
40
|
-
}),
|
|
41
|
-
role: z.string().optional().openapi({ example: "Designer" }),
|
|
42
|
-
location: z.string().optional().openapi({ example: "London, UK" }),
|
|
43
|
-
experienceLevel: z
|
|
44
|
-
.enum(
|
|
45
|
-
Object.values(EXPERIENCE_LEVELS) as [
|
|
46
|
-
ExperienceLevel,
|
|
47
|
-
...ExperienceLevel[],
|
|
48
|
-
],
|
|
49
|
-
)
|
|
50
|
-
.optional()
|
|
51
|
-
.openapi({ example: EXPERIENCE_LEVELS.YEAR_0_1 }),
|
|
52
|
-
|
|
53
|
-
disciplines: z
|
|
54
|
-
.array(z.string())
|
|
55
|
-
.optional()
|
|
56
|
-
.openapi({ example: ["Design", "Art Direction"] }),
|
|
57
|
-
workExperience: z
|
|
58
|
-
.object({
|
|
59
|
-
companyName: z.string(),
|
|
60
|
-
position: z.string(),
|
|
61
|
-
startDate: z.coerce.date().optional(),
|
|
62
|
-
endDate: z.coerce.date().optional(),
|
|
63
|
-
currentlyWorking: z.boolean().optional(),
|
|
64
|
-
description: z.string(),
|
|
65
|
-
})
|
|
66
|
-
.array()
|
|
67
|
-
.optional(),
|
|
68
|
-
links: z
|
|
69
|
-
.object({
|
|
70
|
-
url: z.union([
|
|
71
|
-
z.url({ message: "Please enter a valid URL" }),
|
|
72
|
-
z.literal(""),
|
|
73
|
-
]),
|
|
74
|
-
type: z.enum(LINK_TYPES),
|
|
75
|
-
})
|
|
76
|
-
.array()
|
|
77
|
-
.optional(),
|
|
78
|
-
achievements: z
|
|
79
|
-
.object({
|
|
80
|
-
title: z.string(),
|
|
81
|
-
link: z.string().optional(),
|
|
82
|
-
year: z.coerce.number().int().optional(),
|
|
83
|
-
})
|
|
84
|
-
.array()
|
|
85
|
-
.optional(),
|
|
86
|
-
createdAt: z.coerce
|
|
87
|
-
.date()
|
|
88
|
-
.optional()
|
|
89
|
-
.openapi({ example: "2025-10-13T09:00:00.000Z" }),
|
|
90
|
-
updatedAt: z.coerce
|
|
91
|
-
.date()
|
|
92
|
-
.openapi({ example: "2025-10-13T09:00:00.000Z" }),
|
|
93
|
-
})
|
|
94
|
-
.openapi({
|
|
95
|
-
title: "CreativeEntitySchema",
|
|
96
|
-
description:
|
|
97
|
-
"Represents a creative profile, including bio, experience level, location, disciplines and timestamps.",
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
export const ListCreativesInputSchema = z
|
|
101
|
-
.object({
|
|
102
|
-
query: z.string().optional().openapi({ example: "logo designer" }),
|
|
103
|
-
|
|
104
|
-
disciplines: z
|
|
105
|
-
.array(z.string())
|
|
106
|
-
.optional()
|
|
107
|
-
.openapi({ example: ["branding", "web design"] }),
|
|
108
90
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
],
|
|
116
|
-
),
|
|
117
|
-
)
|
|
118
|
-
.optional()
|
|
119
|
-
.openapi({
|
|
120
|
-
example: [
|
|
121
|
-
EXPERIENCE_LEVELS.YEAR_1_3,
|
|
122
|
-
EXPERIENCE_LEVELS.YEAR_5_PLUS,
|
|
123
|
-
],
|
|
124
|
-
}),
|
|
125
|
-
|
|
126
|
-
location: z.string().optional().openapi({ example: "Los Angeles" }),
|
|
127
|
-
|
|
128
|
-
page: z
|
|
129
|
-
.number()
|
|
130
|
-
.int()
|
|
131
|
-
.min(1)
|
|
132
|
-
.default(1)
|
|
133
|
-
.optional()
|
|
134
|
-
.openapi({ example: 1 }),
|
|
135
|
-
|
|
136
|
-
perPage: z
|
|
137
|
-
.number()
|
|
138
|
-
.int()
|
|
139
|
-
.min(1)
|
|
140
|
-
.max(100)
|
|
141
|
-
.default(20)
|
|
142
|
-
.optional()
|
|
143
|
-
.openapi({ example: 20 }),
|
|
144
|
-
})
|
|
145
|
-
.openapi({
|
|
146
|
-
title: "ListCreativesInput",
|
|
147
|
-
description:
|
|
148
|
-
"Query parameters for filtering and paginating creatives. Supports text search, discipline filtering, experience level filtering, tag filtering, location filtering, and pagination settings.",
|
|
149
|
-
});
|
|
91
|
+
})
|
|
92
|
+
.openapi({
|
|
93
|
+
title: "CreativeEntitySchema",
|
|
94
|
+
description:
|
|
95
|
+
"Represents a creative profile, including bio, experience level, location, disciplines and timestamps.",
|
|
96
|
+
});
|
|
150
97
|
|
|
151
98
|
export const CreateCreativeProfileInputSchema = z
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
location: z
|
|
163
|
-
.string()
|
|
164
|
-
.max(100)
|
|
165
|
-
.optional()
|
|
166
|
-
.describe("Primary location where the creative works or resides.")
|
|
167
|
-
.openapi({
|
|
168
|
-
example: "Lagos, Nigeria",
|
|
169
|
-
}),
|
|
99
|
+
.object({
|
|
100
|
+
experienceLevel: z
|
|
101
|
+
.enum(EXPERIENCE_LEVELS)
|
|
102
|
+
.describe("Overall experience range of the creative.")
|
|
103
|
+
.default(EXPERIENCE_LEVELS.YEAR_0_1)
|
|
104
|
+
.openapi({
|
|
105
|
+
example: EXPERIENCE_LEVELS.YEAR_1_3,
|
|
106
|
+
}),
|
|
107
|
+
role: z.string().optional().openapi({ example: "Designer" }),
|
|
170
108
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
109
|
+
location: z
|
|
110
|
+
.string()
|
|
111
|
+
.max(100)
|
|
112
|
+
.optional()
|
|
113
|
+
.describe("Primary location where the creative works or resides.")
|
|
114
|
+
.openapi({
|
|
115
|
+
example: "Lagos, Nigeria",
|
|
116
|
+
}),
|
|
117
|
+
disciplineSlugs: z
|
|
118
|
+
.array(z.string())
|
|
119
|
+
.min(1, "At least one discipline is required")
|
|
120
|
+
.default([])
|
|
121
|
+
.describe("List of discipline slugs representing the creative’s fields.")
|
|
122
|
+
.openapi({
|
|
123
|
+
example: ["ui-ux", "frontend"],
|
|
124
|
+
}),
|
|
125
|
+
})
|
|
126
|
+
.openapi({
|
|
127
|
+
title: "create creative profile",
|
|
128
|
+
description: "Payload for creating a new creative profile.",
|
|
129
|
+
});
|
|
186
130
|
|
|
187
131
|
export const UpdateCreativeProfileInputSchema = z
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
132
|
+
.object({
|
|
133
|
+
experienceLevel: z
|
|
134
|
+
.enum(EXPERIENCE_LEVELS)
|
|
135
|
+
.optional()
|
|
136
|
+
.openapi({ example: EXPERIENCE_LEVELS.YEAR_3_5 }),
|
|
137
|
+
role: z.string().optional().openapi({ example: "Designer" }),
|
|
138
|
+
bio: z
|
|
139
|
+
.string()
|
|
140
|
+
.max(600)
|
|
141
|
+
.optional()
|
|
142
|
+
.openapi({ example: "I am a freelance UI/UX designer." }),
|
|
143
|
+
location: z
|
|
144
|
+
.string()
|
|
145
|
+
.max(100)
|
|
146
|
+
.optional()
|
|
147
|
+
.openapi({ example: "Lagos, Nigeria" }),
|
|
148
|
+
disciplineSlugs: z
|
|
149
|
+
.array(z.string())
|
|
150
|
+
.min(1, "At least one discipline is required")
|
|
151
|
+
.optional()
|
|
152
|
+
.openapi({ example: ["frontend", "ui-ux"] }),
|
|
153
|
+
workExperience: z
|
|
154
|
+
.object({
|
|
155
|
+
companyName: z.string(),
|
|
156
|
+
position: z.string(),
|
|
157
|
+
startDate: z.string().optional(),
|
|
158
|
+
endDate: z.string().optional(),
|
|
159
|
+
currentlyWorking: z.boolean().default(false),
|
|
160
|
+
description: z.string().optional(),
|
|
161
|
+
})
|
|
162
|
+
.array()
|
|
163
|
+
.optional(),
|
|
164
|
+
links: z
|
|
165
|
+
.object({
|
|
166
|
+
url: z.union([
|
|
167
|
+
z.url({ message: "Please enter a valid URL" }),
|
|
168
|
+
z.literal(""),
|
|
169
|
+
]),
|
|
170
|
+
type: z.enum(LINK_TYPES),
|
|
171
|
+
})
|
|
172
|
+
.array()
|
|
173
|
+
.optional(),
|
|
174
|
+
version: z.int(),
|
|
175
|
+
achievements: z
|
|
176
|
+
.object({
|
|
177
|
+
title: z.string(),
|
|
178
|
+
link: z.string().optional(),
|
|
179
|
+
year: z.coerce.number().int().optional(),
|
|
180
|
+
})
|
|
181
|
+
.array()
|
|
182
|
+
.optional(),
|
|
183
|
+
})
|
|
184
|
+
.openapi({
|
|
185
|
+
title: "update creative profile",
|
|
186
|
+
});
|
|
243
187
|
|
|
244
188
|
export const GetCreativeInputSchema = z.object({
|
|
245
|
-
|
|
246
|
-
|
|
189
|
+
value: z.cuid2(),
|
|
190
|
+
by: ProfileIdentifierSchema.shape.by,
|
|
247
191
|
});
|
|
248
192
|
|
|
249
193
|
export const GetCreativeQuerySchema = ProfileIdentifierSchema;
|
|
@@ -255,24 +199,24 @@ export const GetCreativeOutputSchema = CreativeEntitySchema;
|
|
|
255
199
|
export const UpdateCreativeOutputSchema = CreativeEntitySchema;
|
|
256
200
|
|
|
257
201
|
export const CreativeWithUserEntitySchema = MinimalCreativeEntitySchema.extend({
|
|
258
|
-
|
|
202
|
+
user: MinimalUserSchema,
|
|
259
203
|
});
|
|
260
204
|
|
|
261
205
|
export const SearchCreativeInputSchema = z.object({
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
206
|
+
string: z
|
|
207
|
+
.string()
|
|
208
|
+
.min(1, { message: "Search string cannot be empty" })
|
|
209
|
+
.max(200, { message: "Search string cannot exceed 200 characters" }),
|
|
210
|
+
limit: z.coerce
|
|
211
|
+
.number()
|
|
212
|
+
.int({ message: "Limit must be an integer" })
|
|
213
|
+
.min(1, { message: "Limit must be at least 1" })
|
|
214
|
+
.max(100, { message: "Limit cannot exceed 100" })
|
|
215
|
+
.default(20),
|
|
216
|
+
cursor: z.string().optional(),
|
|
273
217
|
});
|
|
274
218
|
|
|
275
219
|
export const SearchCreativeOutputSchema = z.object({
|
|
276
|
-
|
|
277
|
-
|
|
220
|
+
creatives: z.array(CreativeWithUserEntitySchema),
|
|
221
|
+
nextCursor: z.string().optional().nullable(),
|
|
278
222
|
});
|
package/src/types/brand.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { z } from "@hono/zod-openapi";
|
|
2
2
|
import {
|
|
3
3
|
BrandEntitySchema,
|
|
4
|
-
ListBrandsInputSchema,
|
|
5
4
|
CreateBrandProfileInputSchema,
|
|
6
5
|
UpdateBrandProfileInputSchema,
|
|
7
6
|
GetBrandInputSchema,
|
|
@@ -16,8 +15,6 @@ import {
|
|
|
16
15
|
|
|
17
16
|
export type BrandEntity = z.infer<typeof BrandEntitySchema>;
|
|
18
17
|
|
|
19
|
-
export type ListBrandsInput = z.infer<typeof ListBrandsInputSchema>;
|
|
20
|
-
|
|
21
18
|
export type CreateBrandProfileInput = z.infer<
|
|
22
19
|
typeof CreateBrandProfileInputSchema
|
|
23
20
|
>;
|
package/src/types/creative.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { z } from "@hono/zod-openapi";
|
|
2
2
|
import {
|
|
3
3
|
CreativeEntitySchema,
|
|
4
|
-
ListCreativesInputSchema,
|
|
5
4
|
CreateCreativeProfileInputSchema,
|
|
6
5
|
UpdateCreativeProfileInputSchema,
|
|
7
6
|
GetCreativeInputSchema,
|
|
@@ -16,8 +15,6 @@ import {
|
|
|
16
15
|
|
|
17
16
|
export type CreativeEntity = z.infer<typeof CreativeEntitySchema>;
|
|
18
17
|
|
|
19
|
-
export type ListCreativesInput = z.infer<typeof ListCreativesInputSchema>;
|
|
20
|
-
|
|
21
18
|
export type CreateCreativeProfileInput = z.infer<
|
|
22
19
|
typeof CreateCreativeProfileInputSchema
|
|
23
20
|
>;
|