@strong-together/shared 1.1.0 → 2.0.0
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/index.cjs +2371 -0
- package/dist/index.d.cts +5016 -0
- package/dist/index.d.ts +5016 -5905
- package/dist/index.js +2030 -467
- package/package.json +32 -21
- package/README.md +0 -612
- package/dist/index.d.mts +0 -5905
- package/dist/index.mjs +0 -559
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,2371 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all)
|
|
11
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from))
|
|
16
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
17
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
18
|
+
}
|
|
19
|
+
return to;
|
|
20
|
+
};
|
|
21
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
22
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
23
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
24
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
25
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
26
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
27
|
+
mod
|
|
28
|
+
));
|
|
29
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
30
|
+
|
|
31
|
+
// src/index.ts
|
|
32
|
+
var index_exports = {};
|
|
33
|
+
__export(index_exports, {
|
|
34
|
+
accessTokenPayloadSchema: () => accessTokenPayloadSchema,
|
|
35
|
+
addAerobicsRequest: () => addAerobicsRequest,
|
|
36
|
+
addWorkoutRequest: () => addWorkoutRequest,
|
|
37
|
+
addWorkoutResponseSchema: () => addWorkoutResponseSchema,
|
|
38
|
+
adherenceExerciseStatsSchema: () => adherenceExerciseStatsSchema,
|
|
39
|
+
aerobicTrackingDbSchema: () => aerobicTrackingDbSchema,
|
|
40
|
+
aerobicsDailyRecordSchema: () => aerobicsDailyRecordSchema,
|
|
41
|
+
aerobicsWeeklyRecordSchema: () => aerobicsWeeklyRecordSchema,
|
|
42
|
+
allUserMessageSchema: () => allUserMessageSchema,
|
|
43
|
+
analyzeVideoPayloadSchema: () => analyzeVideoPayloadSchema,
|
|
44
|
+
analyzeVideoResultPayloadSchema: () => analyzeVideoResultPayloadSchema,
|
|
45
|
+
appleOAuthRequest: () => appleOAuthRequest,
|
|
46
|
+
appleTokenVerificationResultSchema: () => appleTokenVerificationResultSchema,
|
|
47
|
+
bootstrapRequest: () => bootstrapRequest,
|
|
48
|
+
bootstrapResponseSchema: () => bootstrapResponseSchema,
|
|
49
|
+
changeEmailAndVerifyRequest: () => changeEmailAndVerifyRequest,
|
|
50
|
+
changeEmailTokenPayloadSchema: () => changeEmailTokenPayloadSchema,
|
|
51
|
+
checkUserVerifyRequest: () => checkUserVerifyRequest,
|
|
52
|
+
createUserRequest: () => createUserRequest,
|
|
53
|
+
createUserResponseSchema: () => createUserResponseSchema,
|
|
54
|
+
createUserUserSchema: () => createUserUserSchema,
|
|
55
|
+
deleteMessageRequest: () => deleteMessageRequest,
|
|
56
|
+
deleteMessageResponseSchema: () => deleteMessageResponseSchema,
|
|
57
|
+
deleteProfilePicRequest: () => deleteProfilePicRequest,
|
|
58
|
+
deletedMessageSchema: () => deletedMessageSchema,
|
|
59
|
+
emailVerifyPayloadSchema: () => emailVerifyPayloadSchema,
|
|
60
|
+
enqueueAanalyzeVideoParamsSchema: () => enqueueAanalyzeVideoParamsSchema,
|
|
61
|
+
exerciseDbSchema: () => exerciseDbSchema,
|
|
62
|
+
exerciseInPlanSchema: () => exerciseInPlanSchema,
|
|
63
|
+
exerciseMetadataSchema: () => exerciseMetadataSchema,
|
|
64
|
+
exerciseToWorkoutSplitDbSchema: () => exerciseToWorkoutSplitDbSchema,
|
|
65
|
+
exerciseToWorkoutSplitExpandedViewDbSchema: () => exerciseToWorkoutSplitExpandedViewDbSchema,
|
|
66
|
+
exerciseTrackingAnalysisSchema: () => exerciseTrackingAnalysisSchema,
|
|
67
|
+
exerciseTrackingAndStatsSchema: () => exerciseTrackingAndStatsSchema,
|
|
68
|
+
exerciseTrackingDbSchema: () => exerciseTrackingDbSchema,
|
|
69
|
+
exerciseTrackingExpandedViewDbSchema: () => exerciseTrackingExpandedViewDbSchema,
|
|
70
|
+
exerciseTrackingPrMaxSchema: () => exerciseTrackingPrMaxSchema,
|
|
71
|
+
finishUserWorkoutResponseSchema: () => finishUserWorkoutResponseSchema,
|
|
72
|
+
finishWorkoutRequest: () => finishWorkoutRequest,
|
|
73
|
+
forgotPasswordPayloadSchema: () => forgotPasswordPayloadSchema,
|
|
74
|
+
generateTicketRequest: () => generateTicketRequest,
|
|
75
|
+
generateTicketResponseSchema: () => generateTicketResponseSchema,
|
|
76
|
+
getAerobicsRequest: () => getAerobicsRequest,
|
|
77
|
+
getAllExercisesExerciseSchema: () => getAllExercisesExerciseSchema,
|
|
78
|
+
getAllExercisesResponseSchema: () => getAllExercisesResponseSchema,
|
|
79
|
+
getAllMessagesRequest: () => getAllMessagesRequest,
|
|
80
|
+
getAllUserMessagesResponseSchema: () => getAllUserMessagesResponseSchema,
|
|
81
|
+
getAnalyticsResponseSchema: () => getAnalyticsResponseSchema,
|
|
82
|
+
getAuthenticatedUserByIdResponseSchema: () => getAuthenticatedUserByIdResponseSchema,
|
|
83
|
+
getExerciseTrackingRequest: () => getExerciseTrackingRequest,
|
|
84
|
+
getExerciseTrackingResponseSchema: () => getExerciseTrackingResponseSchema,
|
|
85
|
+
getPresignedUrlFromS3ResponseSchema: () => getPresignedUrlFromS3ResponseSchema,
|
|
86
|
+
getPresignedUrlS3Request: () => getPresignedUrlS3Request,
|
|
87
|
+
getWholeUserWorkoutPlanResponseSchema: () => getWholeUserWorkoutPlanResponseSchema,
|
|
88
|
+
getWholeWorkoutPlanRequest: () => getWholeWorkoutPlanRequest,
|
|
89
|
+
googleOAuthRequest: () => googleOAuthRequest,
|
|
90
|
+
googleTokenVerificationResultSchema: () => googleTokenVerificationResultSchema,
|
|
91
|
+
loginRequest: () => loginRequest,
|
|
92
|
+
loginResponseSchema: () => loginResponseSchema,
|
|
93
|
+
logoutResponseSchema: () => logoutResponseSchema,
|
|
94
|
+
markMessageAsReadRequest: () => markMessageAsReadRequest,
|
|
95
|
+
markMessageAsReadResponseSchema: () => markMessageAsReadResponseSchema,
|
|
96
|
+
messageAfterSendResponseSchema: () => messageAfterSendResponseSchema,
|
|
97
|
+
messageAsReadSchema: () => messageAsReadSchema,
|
|
98
|
+
messageDbSchema: () => messageDbSchema,
|
|
99
|
+
oAuthLoginResponseSchema: () => oAuthLoginResponseSchema,
|
|
100
|
+
oauthAccountDbSchema: () => oauthAccountDbSchema,
|
|
101
|
+
proceedLoginResponseSchema: () => proceedLoginResponseSchema,
|
|
102
|
+
prsViewDbSchema: () => prsViewDbSchema,
|
|
103
|
+
queryGetExerciseMapByMuscleRowSchema: () => queryGetExerciseMapByMuscleRowSchema,
|
|
104
|
+
refreshTokenResponseSchema: () => refreshTokenResponseSchema,
|
|
105
|
+
resetPasswordRequest: () => resetPasswordRequest,
|
|
106
|
+
resetPasswordResponseSchema: () => resetPasswordResponseSchema,
|
|
107
|
+
saveUserPushTokenRequest: () => saveUserPushTokenRequest,
|
|
108
|
+
sendChangePassEmailRequest: () => sendChangePassEmailRequest,
|
|
109
|
+
sendVerificationMailRequest: () => sendVerificationMailRequest,
|
|
110
|
+
serializedDateSchema: () => serializedDateSchema,
|
|
111
|
+
setProfilePicAndUpdateDBResponseSchema: () => setProfilePicAndUpdateDBResponseSchema,
|
|
112
|
+
squatRepetitionSchema: () => squatRepetitionSchema,
|
|
113
|
+
timezoneSchema: () => timezoneSchema,
|
|
114
|
+
tokenVersionResultSchema: () => tokenVersionResultSchema,
|
|
115
|
+
trackingByDateItemSchema: () => trackingByDateItemSchema,
|
|
116
|
+
trackingBySplitNameItemSchema: () => trackingBySplitNameItemSchema,
|
|
117
|
+
trackingMapItemSchema: () => trackingMapItemSchema,
|
|
118
|
+
trackingSetDbSchema: () => trackingSetDbSchema,
|
|
119
|
+
updateAuthenticatedUserResponseSchema: () => updateAuthenticatedUserResponseSchema,
|
|
120
|
+
updateUserRequest: () => updateUserRequest,
|
|
121
|
+
userAerobicsResponseSchema: () => userAerobicsResponseSchema,
|
|
122
|
+
userAfterBumpSchema: () => userAfterBumpSchema,
|
|
123
|
+
userByIndetifierSchema: () => userByIndetifierSchema,
|
|
124
|
+
userDataResponseSchema: () => userDataResponseSchema,
|
|
125
|
+
userDataSchema: () => userDataSchema,
|
|
126
|
+
userDbSchema: () => userDbSchema,
|
|
127
|
+
userInsertDbSchema: () => userInsertDbSchema,
|
|
128
|
+
userReminderSettingDbSchema: () => userReminderSettingDbSchema,
|
|
129
|
+
userSplitInformationDbSchema: () => userSplitInformationDbSchema,
|
|
130
|
+
userUpdateDbSchema: () => userUpdateDbSchema,
|
|
131
|
+
verifyAccountRequest: () => verifyAccountRequest,
|
|
132
|
+
weeklyDataSchema: () => weeklyDataSchema,
|
|
133
|
+
wholeUserWorkoutPlanSchema: () => wholeUserWorkoutPlanSchema,
|
|
134
|
+
workoutPlanDbSchema: () => workoutPlanDbSchema,
|
|
135
|
+
workoutRmRecordSchema: () => workoutRmRecordSchema,
|
|
136
|
+
workoutSetDbSchema: () => workoutSetDbSchema,
|
|
137
|
+
workoutSplitDbSchema: () => workoutSplitDbSchema,
|
|
138
|
+
workoutSplitSchema: () => workoutSplitSchema,
|
|
139
|
+
workoutSplitsMapItemSchema: () => workoutSplitsMapItemSchema,
|
|
140
|
+
workoutSplitsMapSchema: () => workoutSplitsMapSchema,
|
|
141
|
+
workoutSummaryDbSchema: () => workoutSummaryDbSchema
|
|
142
|
+
});
|
|
143
|
+
module.exports = __toCommonJS(index_exports);
|
|
144
|
+
|
|
145
|
+
// src/common/transport.schemas.ts
|
|
146
|
+
var import_v4 = require("zod/v4");
|
|
147
|
+
var serializedDateSchema = import_v4.z.string();
|
|
148
|
+
var timezoneSchema = import_v4.z.string();
|
|
149
|
+
|
|
150
|
+
// src/database/database.schemas.ts
|
|
151
|
+
var import_drizzle_zod = require("drizzle-zod");
|
|
152
|
+
|
|
153
|
+
// ../../src/infrastructure/db/schema/drizzle/roles.ts
|
|
154
|
+
var import_pg_core = require("drizzle-orm/pg-core");
|
|
155
|
+
var anonRole = (0, import_pg_core.pgRole)("anon");
|
|
156
|
+
var authenticatedRole = (0, import_pg_core.pgRole)("authenticated");
|
|
157
|
+
var guestRole = (0, import_pg_core.pgRole)("guest");
|
|
158
|
+
var serviceRole = (0, import_pg_core.pgRole)("service_role");
|
|
159
|
+
var appUserRole = (0, import_pg_core.pgRole)("app_user");
|
|
160
|
+
var appRuntimeUserRole = (0, import_pg_core.pgRole)("app_runtime_user", {
|
|
161
|
+
createDb: false,
|
|
162
|
+
createRole: false,
|
|
163
|
+
inherit: false
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
// ../../src/infrastructure/db/schema/drizzle/schemas.ts
|
|
167
|
+
var import_pg_core2 = require("drizzle-orm/pg-core");
|
|
168
|
+
var authSchema = (0, import_pg_core2.pgSchema)("auth");
|
|
169
|
+
var identitySchema = (0, import_pg_core2.pgSchema)("identity");
|
|
170
|
+
var workoutSchema = (0, import_pg_core2.pgSchema)("workout");
|
|
171
|
+
var trackingSchema = (0, import_pg_core2.pgSchema)("tracking");
|
|
172
|
+
var remindersSchema = (0, import_pg_core2.pgSchema)("reminders");
|
|
173
|
+
var analyticsSchema = (0, import_pg_core2.pgSchema)("analytics");
|
|
174
|
+
var messagesSchema = (0, import_pg_core2.pgSchema)("messages");
|
|
175
|
+
var authProviders = identitySchema.enum("Auth Providers", [
|
|
176
|
+
"apple",
|
|
177
|
+
"google",
|
|
178
|
+
"app"
|
|
179
|
+
]);
|
|
180
|
+
|
|
181
|
+
// ../../src/infrastructure/db/schema/drizzle/identity/user/table.ts
|
|
182
|
+
var import_drizzle_orm27 = require("drizzle-orm");
|
|
183
|
+
var import_pg_core30 = require("drizzle-orm/pg-core");
|
|
184
|
+
|
|
185
|
+
// ../../src/infrastructure/db/schema/drizzle/messages/messages/table.ts
|
|
186
|
+
var import_drizzle_orm2 = require("drizzle-orm");
|
|
187
|
+
var import_pg_core4 = require("drizzle-orm/pg-core");
|
|
188
|
+
|
|
189
|
+
// ../../src/infrastructure/db/schema/drizzle/messages/messages/policies.ts
|
|
190
|
+
var import_drizzle_orm = require("drizzle-orm");
|
|
191
|
+
var import_pg_core3 = require("drizzle-orm/pg-core");
|
|
192
|
+
var uid = import_drizzle_orm.sql`"identity"."current_user_id"()`;
|
|
193
|
+
function messagePolicies(t) {
|
|
194
|
+
const participant = import_drizzle_orm.sql`${uid} = ${t.senderId} or ${uid} = ${t.receiverId}`;
|
|
195
|
+
return [
|
|
196
|
+
// Lets authenticated message participants read their sent or received messages.
|
|
197
|
+
(0, import_pg_core3.pgPolicy)("Enable read access for auth users on message", {
|
|
198
|
+
for: "select",
|
|
199
|
+
to: authenticatedRole,
|
|
200
|
+
using: participant
|
|
201
|
+
}),
|
|
202
|
+
// Lets authenticated users send as themselves or as the existing system sender.
|
|
203
|
+
(0, import_pg_core3.pgPolicy)("Enable insert for auth users on message", {
|
|
204
|
+
for: "insert",
|
|
205
|
+
to: authenticatedRole,
|
|
206
|
+
withCheck: import_drizzle_orm.sql`${uid} = ${t.senderId} or ${t.senderId} = '8dedd0e0-8c25-4c84-a05b-4ae5f5c48f3a'::uuid`
|
|
207
|
+
}),
|
|
208
|
+
// Lets authenticated message participants update a message while remaining participants.
|
|
209
|
+
(0, import_pg_core3.pgPolicy)("Enable update for auth users on message", {
|
|
210
|
+
for: "update",
|
|
211
|
+
to: authenticatedRole,
|
|
212
|
+
using: participant,
|
|
213
|
+
withCheck: participant
|
|
214
|
+
}),
|
|
215
|
+
// Lets authenticated message participants delete their sent or received messages.
|
|
216
|
+
(0, import_pg_core3.pgPolicy)("Enable delete for auth users on message", {
|
|
217
|
+
for: "delete",
|
|
218
|
+
to: authenticatedRole,
|
|
219
|
+
using: participant
|
|
220
|
+
})
|
|
221
|
+
];
|
|
222
|
+
}
|
|
223
|
+
__name(messagePolicies, "messagePolicies");
|
|
224
|
+
|
|
225
|
+
// ../../src/infrastructure/db/schema/drizzle/messages/messages/table.ts
|
|
226
|
+
var uid2 = import_drizzle_orm2.sql`"identity"."current_user_id"()`;
|
|
227
|
+
var message = messagesSchema.table("message", {
|
|
228
|
+
id: (0, import_pg_core4.uuid)("id").defaultRandom().notNull(),
|
|
229
|
+
senderId: (0, import_pg_core4.uuid)("sender_id").default(uid2).notNull(),
|
|
230
|
+
receiverId: (0, import_pg_core4.uuid)("receiver_id").default(uid2).notNull(),
|
|
231
|
+
subject: (0, import_pg_core4.text)("subject").default("Subject").notNull(),
|
|
232
|
+
msg: (0, import_pg_core4.text)("msg").default("Hello World").notNull(),
|
|
233
|
+
sentAt: (0, import_pg_core4.timestamp)("sent_at", {
|
|
234
|
+
withTimezone: true
|
|
235
|
+
}).default(import_drizzle_orm2.sql`(now() AT TIME ZONE 'utc')`).notNull(),
|
|
236
|
+
isRead: (0, import_pg_core4.boolean)("is_read").default(false).notNull()
|
|
237
|
+
}, (t) => [
|
|
238
|
+
(0, import_pg_core4.primaryKey)({
|
|
239
|
+
name: "message_pkey",
|
|
240
|
+
columns: [
|
|
241
|
+
t.id
|
|
242
|
+
]
|
|
243
|
+
}),
|
|
244
|
+
(0, import_pg_core4.foreignKey)({
|
|
245
|
+
name: "message_sender_id_fkey",
|
|
246
|
+
columns: [
|
|
247
|
+
t.senderId
|
|
248
|
+
],
|
|
249
|
+
foreignColumns: [
|
|
250
|
+
user.id
|
|
251
|
+
]
|
|
252
|
+
}).onUpdate("cascade").onDelete("cascade"),
|
|
253
|
+
(0, import_pg_core4.foreignKey)({
|
|
254
|
+
name: "message_receiver_id_fkey",
|
|
255
|
+
columns: [
|
|
256
|
+
t.receiverId
|
|
257
|
+
],
|
|
258
|
+
foreignColumns: [
|
|
259
|
+
user.id
|
|
260
|
+
]
|
|
261
|
+
}).onUpdate("cascade").onDelete("cascade"),
|
|
262
|
+
(0, import_pg_core4.index)("message_receiver_id_idx").on(t.receiverId),
|
|
263
|
+
...messagePolicies(t)
|
|
264
|
+
]);
|
|
265
|
+
var messageRelations = (0, import_drizzle_orm2.relations)(message, ({ one }) => ({
|
|
266
|
+
sender: one(user, {
|
|
267
|
+
fields: [
|
|
268
|
+
message.senderId
|
|
269
|
+
],
|
|
270
|
+
references: [
|
|
271
|
+
user.id
|
|
272
|
+
],
|
|
273
|
+
relationName: "messageSender"
|
|
274
|
+
}),
|
|
275
|
+
receiver: one(user, {
|
|
276
|
+
fields: [
|
|
277
|
+
message.receiverId
|
|
278
|
+
],
|
|
279
|
+
references: [
|
|
280
|
+
user.id
|
|
281
|
+
],
|
|
282
|
+
relationName: "messageReceiver"
|
|
283
|
+
})
|
|
284
|
+
}));
|
|
285
|
+
|
|
286
|
+
// ../../src/infrastructure/db/schema/drizzle/reminders/user_reminder_setting/table.ts
|
|
287
|
+
var import_drizzle_orm4 = require("drizzle-orm");
|
|
288
|
+
var import_pg_core6 = require("drizzle-orm/pg-core");
|
|
289
|
+
|
|
290
|
+
// ../../src/infrastructure/db/schema/drizzle/reminders/user_reminder_setting/policies.ts
|
|
291
|
+
var import_drizzle_orm3 = require("drizzle-orm");
|
|
292
|
+
var import_pg_core5 = require("drizzle-orm/pg-core");
|
|
293
|
+
var uid3 = import_drizzle_orm3.sql`"identity"."current_user_id"()`;
|
|
294
|
+
function userReminderSettingPolicies(t) {
|
|
295
|
+
return [
|
|
296
|
+
// Lets authenticated users read only their own reminder settings.
|
|
297
|
+
(0, import_pg_core5.pgPolicy)("auth can SELECT own reminder settings", {
|
|
298
|
+
for: "select",
|
|
299
|
+
to: authenticatedRole,
|
|
300
|
+
using: import_drizzle_orm3.sql`${uid3} = ${t.userId}`
|
|
301
|
+
}),
|
|
302
|
+
// Lets authenticated users insert reminder settings only for themselves.
|
|
303
|
+
(0, import_pg_core5.pgPolicy)("auth can INSERT own reminder settings", {
|
|
304
|
+
for: "insert",
|
|
305
|
+
to: authenticatedRole,
|
|
306
|
+
withCheck: import_drizzle_orm3.sql`${uid3} = ${t.userId}`
|
|
307
|
+
}),
|
|
308
|
+
// Lets authenticated users update their own reminder settings and preserves ownership.
|
|
309
|
+
(0, import_pg_core5.pgPolicy)("auth can UPDATE own reminder settings", {
|
|
310
|
+
for: "update",
|
|
311
|
+
to: authenticatedRole,
|
|
312
|
+
using: import_drizzle_orm3.sql`${uid3} = ${t.userId}`,
|
|
313
|
+
withCheck: import_drizzle_orm3.sql`${uid3} = ${t.userId}`
|
|
314
|
+
}),
|
|
315
|
+
// Provides the original additional update policy for settings owned by the user.
|
|
316
|
+
(0, import_pg_core5.pgPolicy)("Allow authenticated users to update their own reminder settings", {
|
|
317
|
+
for: "update",
|
|
318
|
+
to: authenticatedRole,
|
|
319
|
+
using: import_drizzle_orm3.sql`${uid3} = ${t.userId}`
|
|
320
|
+
})
|
|
321
|
+
];
|
|
322
|
+
}
|
|
323
|
+
__name(userReminderSettingPolicies, "userReminderSettingPolicies");
|
|
324
|
+
|
|
325
|
+
// ../../src/infrastructure/db/schema/drizzle/reminders/user_reminder_setting/table.ts
|
|
326
|
+
var userReminderSetting = remindersSchema.table("user_reminder_setting", {
|
|
327
|
+
userId: (0, import_pg_core6.uuid)("user_id").notNull(),
|
|
328
|
+
workoutRemindersEnabled: (0, import_pg_core6.boolean)("workout_reminders_enabled").default(true).notNull(),
|
|
329
|
+
reminderOffsetMinutes: (0, import_pg_core6.integer)("reminder_offset_minutes").default(60).notNull(),
|
|
330
|
+
updatedAt: (0, import_pg_core6.timestamp)("updated_at", {
|
|
331
|
+
withTimezone: true
|
|
332
|
+
}).default(import_drizzle_orm4.sql`timezone('UTC', now())`).notNull(),
|
|
333
|
+
timezone: (0, import_pg_core6.text)("timezone").default("'UTC'::text")
|
|
334
|
+
}, (t) => [
|
|
335
|
+
(0, import_pg_core6.primaryKey)({
|
|
336
|
+
name: "user_reminder_setting_pkey",
|
|
337
|
+
columns: [
|
|
338
|
+
t.userId
|
|
339
|
+
]
|
|
340
|
+
}),
|
|
341
|
+
(0, import_pg_core6.foreignKey)({
|
|
342
|
+
name: "user_reminder_setting_user_id_fkey",
|
|
343
|
+
columns: [
|
|
344
|
+
t.userId
|
|
345
|
+
],
|
|
346
|
+
foreignColumns: [
|
|
347
|
+
user.id
|
|
348
|
+
]
|
|
349
|
+
}).onDelete("cascade"),
|
|
350
|
+
...userReminderSettingPolicies(t)
|
|
351
|
+
]);
|
|
352
|
+
var userReminderSettingRelations = (0, import_drizzle_orm4.relations)(userReminderSetting, ({ one }) => ({
|
|
353
|
+
user: one(user, {
|
|
354
|
+
fields: [
|
|
355
|
+
userReminderSetting.userId
|
|
356
|
+
],
|
|
357
|
+
references: [
|
|
358
|
+
user.id
|
|
359
|
+
]
|
|
360
|
+
})
|
|
361
|
+
}));
|
|
362
|
+
|
|
363
|
+
// ../../src/infrastructure/db/schema/drizzle/reminders/user_split_information/table.ts
|
|
364
|
+
var import_drizzle_orm21 = require("drizzle-orm");
|
|
365
|
+
var import_pg_core24 = require("drizzle-orm/pg-core");
|
|
366
|
+
|
|
367
|
+
// ../../src/infrastructure/db/schema/drizzle/workout/workout_split/table.ts
|
|
368
|
+
var import_drizzle_orm20 = require("drizzle-orm");
|
|
369
|
+
var import_pg_core23 = require("drizzle-orm/pg-core");
|
|
370
|
+
|
|
371
|
+
// ../../src/infrastructure/db/schema/drizzle/tracking/workout_summary/table.ts
|
|
372
|
+
var import_drizzle_orm16 = require("drizzle-orm");
|
|
373
|
+
var import_pg_core19 = require("drizzle-orm/pg-core");
|
|
374
|
+
|
|
375
|
+
// ../../src/infrastructure/db/schema/drizzle/tracking/exercise_tracking/table.ts
|
|
376
|
+
var import_drizzle_orm14 = require("drizzle-orm");
|
|
377
|
+
var import_pg_core16 = require("drizzle-orm/pg-core");
|
|
378
|
+
|
|
379
|
+
// ../../src/infrastructure/db/schema/drizzle/workout/exercises/table.ts
|
|
380
|
+
var import_drizzle_orm10 = require("drizzle-orm");
|
|
381
|
+
var import_pg_core12 = require("drizzle-orm/pg-core");
|
|
382
|
+
|
|
383
|
+
// ../../src/infrastructure/db/schema/drizzle/workout/exercisetoworkoutsplit/table.ts
|
|
384
|
+
var import_drizzle_orm8 = require("drizzle-orm");
|
|
385
|
+
var import_pg_core10 = require("drizzle-orm/pg-core");
|
|
386
|
+
|
|
387
|
+
// ../../src/infrastructure/db/schema/drizzle/workout/workout_set/table.ts
|
|
388
|
+
var import_drizzle_orm6 = require("drizzle-orm");
|
|
389
|
+
var import_pg_core8 = require("drizzle-orm/pg-core");
|
|
390
|
+
|
|
391
|
+
// ../../src/infrastructure/db/schema/drizzle/workout/workout_set/policies.ts
|
|
392
|
+
var import_drizzle_orm5 = require("drizzle-orm");
|
|
393
|
+
var import_pg_core7 = require("drizzle-orm/pg-core");
|
|
394
|
+
var currentUserId = import_drizzle_orm5.sql`"identity"."current_user_id"()`;
|
|
395
|
+
function workoutSetPolicies(table) {
|
|
396
|
+
const ownsWorkoutSet = import_drizzle_orm5.sql`exists (
|
|
397
|
+
select 1
|
|
398
|
+
from "workout"."exercise_to_workout_split" ets
|
|
399
|
+
join "workout"."workout_split" ws on ws."id" = ets."workout_split_id"
|
|
400
|
+
join "workout"."workout_plan" wp on wp."id" = ws."workout_id"
|
|
401
|
+
where ets."id" = ${table.exerciseToSplitId}
|
|
402
|
+
and wp."user_id" = ${currentUserId}
|
|
403
|
+
)`;
|
|
404
|
+
return [
|
|
405
|
+
// Lets authenticated users read planned sets only from workout plans they own.
|
|
406
|
+
(0, import_pg_core7.pgPolicy)("Enable read access for auth users on workout_set", {
|
|
407
|
+
for: "select",
|
|
408
|
+
to: authenticatedRole,
|
|
409
|
+
using: ownsWorkoutSet
|
|
410
|
+
}),
|
|
411
|
+
// Lets authenticated users add planned sets only to workout plans they own.
|
|
412
|
+
(0, import_pg_core7.pgPolicy)("Enable insert for auth users on workout_set", {
|
|
413
|
+
for: "insert",
|
|
414
|
+
to: authenticatedRole,
|
|
415
|
+
withCheck: ownsWorkoutSet
|
|
416
|
+
}),
|
|
417
|
+
// Lets authenticated users update planned sets only within workout plans they own.
|
|
418
|
+
(0, import_pg_core7.pgPolicy)("Enable update for auth users on workout_set", {
|
|
419
|
+
for: "update",
|
|
420
|
+
to: authenticatedRole,
|
|
421
|
+
using: ownsWorkoutSet,
|
|
422
|
+
withCheck: ownsWorkoutSet
|
|
423
|
+
}),
|
|
424
|
+
// Lets authenticated users delete planned sets only from workout plans they own.
|
|
425
|
+
(0, import_pg_core7.pgPolicy)("Enable delete for auth users on workout_set", {
|
|
426
|
+
for: "delete",
|
|
427
|
+
to: authenticatedRole,
|
|
428
|
+
using: ownsWorkoutSet
|
|
429
|
+
})
|
|
430
|
+
];
|
|
431
|
+
}
|
|
432
|
+
__name(workoutSetPolicies, "workoutSetPolicies");
|
|
433
|
+
|
|
434
|
+
// ../../src/infrastructure/db/schema/drizzle/workout/workout_set/table.ts
|
|
435
|
+
var workoutSet = workoutSchema.table("workout_set", {
|
|
436
|
+
id: (0, import_pg_core8.uuid)("id").defaultRandom().notNull(),
|
|
437
|
+
exerciseToSplitId: (0, import_pg_core8.bigint)("exercise_to_split_id", {
|
|
438
|
+
mode: "number"
|
|
439
|
+
}).notNull(),
|
|
440
|
+
orderIndex: (0, import_pg_core8.integer)("order_index").notNull(),
|
|
441
|
+
reps: (0, import_pg_core8.integer)("reps").notNull()
|
|
442
|
+
}, (t) => [
|
|
443
|
+
(0, import_pg_core8.primaryKey)({
|
|
444
|
+
name: "workout_set_pkey",
|
|
445
|
+
columns: [
|
|
446
|
+
t.id
|
|
447
|
+
]
|
|
448
|
+
}),
|
|
449
|
+
(0, import_pg_core8.unique)("workout_set_exercise_order_unique").on(t.exerciseToSplitId, t.orderIndex),
|
|
450
|
+
(0, import_pg_core8.foreignKey)({
|
|
451
|
+
name: "workout_set_exercise_to_split_id_fkey",
|
|
452
|
+
columns: [
|
|
453
|
+
t.exerciseToSplitId
|
|
454
|
+
],
|
|
455
|
+
foreignColumns: [
|
|
456
|
+
exerciseToWorkoutSplit.id
|
|
457
|
+
]
|
|
458
|
+
}).onUpdate("cascade").onDelete("cascade"),
|
|
459
|
+
(0, import_pg_core8.index)("workout_set_exercise_to_split_id_idx").on(t.exerciseToSplitId),
|
|
460
|
+
...workoutSetPolicies(t)
|
|
461
|
+
]);
|
|
462
|
+
var workoutSetRelations = (0, import_drizzle_orm6.relations)(workoutSet, ({ one }) => ({
|
|
463
|
+
exerciseToWorkoutSplit: one(exerciseToWorkoutSplit, {
|
|
464
|
+
fields: [
|
|
465
|
+
workoutSet.exerciseToSplitId
|
|
466
|
+
],
|
|
467
|
+
references: [
|
|
468
|
+
exerciseToWorkoutSplit.id
|
|
469
|
+
]
|
|
470
|
+
})
|
|
471
|
+
}));
|
|
472
|
+
|
|
473
|
+
// ../../src/infrastructure/db/schema/drizzle/workout/exercisetoworkoutsplit/policies.ts
|
|
474
|
+
var import_drizzle_orm7 = require("drizzle-orm");
|
|
475
|
+
var import_pg_core9 = require("drizzle-orm/pg-core");
|
|
476
|
+
var uid4 = import_drizzle_orm7.sql`"identity"."current_user_id"()`;
|
|
477
|
+
function exerciseToWorkoutSplitPolicies(t) {
|
|
478
|
+
const owns = import_drizzle_orm7.sql`${uid4} = (select wp."user_id" from "workout"."workout_plan" wp join "workout"."workout_split" ws on ws."workout_id" = wp."id" where ws."id" = ${t.workoutSplitId})`;
|
|
479
|
+
const ownsForDelete = import_drizzle_orm7.sql`exists (select 1 from "workout"."workout_split" ws join "workout"."workout_plan" wp on wp."id" = ws."workout_id" where ws."id" = ${t.workoutSplitId} and wp."user_id" = ${uid4})`;
|
|
480
|
+
return [
|
|
481
|
+
// Lets authenticated users read exercise assignments in splits they own.
|
|
482
|
+
(0, import_pg_core9.pgPolicy)("Enable read access for auth users on exercise_to_workout_split", {
|
|
483
|
+
for: "select",
|
|
484
|
+
to: authenticatedRole,
|
|
485
|
+
using: owns
|
|
486
|
+
}),
|
|
487
|
+
// Lets authenticated users add exercise assignments only to splits they own.
|
|
488
|
+
(0, import_pg_core9.pgPolicy)("Enable insert for auth users on exercise_to_workout_split", {
|
|
489
|
+
for: "insert",
|
|
490
|
+
to: authenticatedRole,
|
|
491
|
+
withCheck: owns
|
|
492
|
+
}),
|
|
493
|
+
// Lets authenticated users update exercise assignments only in splits they own.
|
|
494
|
+
(0, import_pg_core9.pgPolicy)("Enable update for auth users on exercise_to_workout_split", {
|
|
495
|
+
for: "update",
|
|
496
|
+
to: authenticatedRole,
|
|
497
|
+
using: owns,
|
|
498
|
+
withCheck: owns
|
|
499
|
+
}),
|
|
500
|
+
// Lets authenticated users delete exercise assignments only from splits they own.
|
|
501
|
+
(0, import_pg_core9.pgPolicy)("Enable delete for auth users on exercise_to_workout_split", {
|
|
502
|
+
for: "delete",
|
|
503
|
+
to: authenticatedRole,
|
|
504
|
+
using: ownsForDelete
|
|
505
|
+
})
|
|
506
|
+
];
|
|
507
|
+
}
|
|
508
|
+
__name(exerciseToWorkoutSplitPolicies, "exerciseToWorkoutSplitPolicies");
|
|
509
|
+
|
|
510
|
+
// ../../src/infrastructure/db/schema/drizzle/workout/exercisetoworkoutsplit/table.ts
|
|
511
|
+
var exerciseToWorkoutSplit = workoutSchema.table("exercise_to_workout_split", {
|
|
512
|
+
id: (0, import_pg_core10.bigint)("id", {
|
|
513
|
+
mode: "number"
|
|
514
|
+
}).generatedByDefaultAsIdentity({
|
|
515
|
+
name: "exercise_to_workout_split_id_seq"
|
|
516
|
+
}).notNull(),
|
|
517
|
+
workoutSplitId: (0, import_pg_core10.bigint)("workout_split_id", {
|
|
518
|
+
mode: "number"
|
|
519
|
+
}).notNull(),
|
|
520
|
+
exerciseId: (0, import_pg_core10.bigint)("exercise_id", {
|
|
521
|
+
mode: "number"
|
|
522
|
+
}).notNull(),
|
|
523
|
+
createdAt: (0, import_pg_core10.timestamp)("created_at", {
|
|
524
|
+
withTimezone: true
|
|
525
|
+
}).default(import_drizzle_orm8.sql`(now() AT TIME ZONE 'utc')`).notNull(),
|
|
526
|
+
orderIndex: (0, import_pg_core10.bigint)("order_index", {
|
|
527
|
+
mode: "number"
|
|
528
|
+
}).notNull(),
|
|
529
|
+
isActive: (0, import_pg_core10.boolean)("is_active").default(true).notNull()
|
|
530
|
+
}, (t) => [
|
|
531
|
+
(0, import_pg_core10.primaryKey)({
|
|
532
|
+
name: "exercise_to_workout_split_pkey",
|
|
533
|
+
columns: [
|
|
534
|
+
t.id
|
|
535
|
+
]
|
|
536
|
+
}),
|
|
537
|
+
(0, import_pg_core10.unique)("uq_exercise_to_workout_split_workout_split_exercise").on(t.workoutSplitId, t.exerciseId),
|
|
538
|
+
(0, import_pg_core10.foreignKey)({
|
|
539
|
+
name: "exercise_to_workout_split_exercise_id_fkey",
|
|
540
|
+
columns: [
|
|
541
|
+
t.exerciseId
|
|
542
|
+
],
|
|
543
|
+
foreignColumns: [
|
|
544
|
+
exercise.id
|
|
545
|
+
]
|
|
546
|
+
}).onUpdate("cascade").onDelete("cascade"),
|
|
547
|
+
(0, import_pg_core10.foreignKey)({
|
|
548
|
+
name: "exercise_to_workout_split_workout_split_id_fkey",
|
|
549
|
+
columns: [
|
|
550
|
+
t.workoutSplitId
|
|
551
|
+
],
|
|
552
|
+
foreignColumns: [
|
|
553
|
+
workoutSplit.id
|
|
554
|
+
]
|
|
555
|
+
}).onUpdate("cascade").onDelete("cascade"),
|
|
556
|
+
(0, import_pg_core10.index)("exercise_to_workout_split_active_idx").on(t.workoutSplitId, t.orderIndex).where(import_drizzle_orm8.sql`${t.isActive} = true`),
|
|
557
|
+
(0, import_pg_core10.index)("exercise_to_workout_split_workout_split_id_order_index_idx").on(t.workoutSplitId, t.orderIndex),
|
|
558
|
+
...exerciseToWorkoutSplitPolicies(t)
|
|
559
|
+
]);
|
|
560
|
+
var exerciseToWorkoutSplitRelations = (0, import_drizzle_orm8.relations)(exerciseToWorkoutSplit, ({ many, one }) => ({
|
|
561
|
+
exercise: one(exercise, {
|
|
562
|
+
fields: [
|
|
563
|
+
exerciseToWorkoutSplit.exerciseId
|
|
564
|
+
],
|
|
565
|
+
references: [
|
|
566
|
+
exercise.id
|
|
567
|
+
]
|
|
568
|
+
}),
|
|
569
|
+
workoutSplit: one(workoutSplit, {
|
|
570
|
+
fields: [
|
|
571
|
+
exerciseToWorkoutSplit.workoutSplitId
|
|
572
|
+
],
|
|
573
|
+
references: [
|
|
574
|
+
workoutSplit.id
|
|
575
|
+
]
|
|
576
|
+
}),
|
|
577
|
+
exerciseTrackings: many(exerciseTracking),
|
|
578
|
+
workoutSets: many(workoutSet)
|
|
579
|
+
}));
|
|
580
|
+
|
|
581
|
+
// ../../src/infrastructure/db/schema/drizzle/workout/exercises/policies.ts
|
|
582
|
+
var import_drizzle_orm9 = require("drizzle-orm");
|
|
583
|
+
var import_pg_core11 = require("drizzle-orm/pg-core");
|
|
584
|
+
var exercisePolicies = /* @__PURE__ */ __name(() => [
|
|
585
|
+
// Makes the shared exercise catalog readable to every authenticated user.
|
|
586
|
+
(0, import_pg_core11.pgPolicy)("Allow all authenticated users to read exercise", {
|
|
587
|
+
for: "select",
|
|
588
|
+
to: authenticatedRole,
|
|
589
|
+
using: import_drizzle_orm9.sql`true`
|
|
590
|
+
})
|
|
591
|
+
], "exercisePolicies");
|
|
592
|
+
|
|
593
|
+
// ../../src/infrastructure/db/schema/drizzle/workout/exercises/table.ts
|
|
594
|
+
var exercise = workoutSchema.table("exercise", {
|
|
595
|
+
id: (0, import_pg_core12.bigint)("id", {
|
|
596
|
+
mode: "number"
|
|
597
|
+
}).generatedByDefaultAsIdentity({
|
|
598
|
+
name: "exercise_id_seq"
|
|
599
|
+
}).notNull(),
|
|
600
|
+
name: (0, import_pg_core12.text)("name").notNull(),
|
|
601
|
+
description: (0, import_pg_core12.text)("description").notNull(),
|
|
602
|
+
targetMuscle: (0, import_pg_core12.text)("target_muscle").notNull(),
|
|
603
|
+
specificTargetMuscle: (0, import_pg_core12.text)("specific_target_muscle").notNull()
|
|
604
|
+
}, (t) => [
|
|
605
|
+
(0, import_pg_core12.primaryKey)({
|
|
606
|
+
name: "exercise_pkey",
|
|
607
|
+
columns: [
|
|
608
|
+
t.id
|
|
609
|
+
]
|
|
610
|
+
}),
|
|
611
|
+
(0, import_pg_core12.uniqueIndex)("exercise_name_unique").on(t.name),
|
|
612
|
+
...exercisePolicies()
|
|
613
|
+
]);
|
|
614
|
+
var exerciseRelations = (0, import_drizzle_orm10.relations)(exercise, ({ many }) => ({
|
|
615
|
+
workoutSplitAssignments: many(exerciseToWorkoutSplit)
|
|
616
|
+
}));
|
|
617
|
+
|
|
618
|
+
// ../../src/infrastructure/db/schema/drizzle/tracking/tracking_set/table.ts
|
|
619
|
+
var import_drizzle_orm12 = require("drizzle-orm");
|
|
620
|
+
var import_pg_core14 = require("drizzle-orm/pg-core");
|
|
621
|
+
|
|
622
|
+
// ../../src/infrastructure/db/schema/drizzle/tracking/tracking_set/policies.ts
|
|
623
|
+
var import_drizzle_orm11 = require("drizzle-orm");
|
|
624
|
+
var import_pg_core13 = require("drizzle-orm/pg-core");
|
|
625
|
+
var currentUserId2 = import_drizzle_orm11.sql`"identity"."current_user_id"()`;
|
|
626
|
+
function trackingSetPolicies(table) {
|
|
627
|
+
const ownsExerciseTracking = import_drizzle_orm11.sql`exists (
|
|
628
|
+
select 1
|
|
629
|
+
from "tracking"."exercise_tracking" et
|
|
630
|
+
join "tracking"."workout_summary" ws on ws."id" = et."workout_summary_id"
|
|
631
|
+
where et."id" = ${table.exerciseTrackingId}
|
|
632
|
+
and ws."user_id" = ${currentUserId2}
|
|
633
|
+
)`;
|
|
634
|
+
return [
|
|
635
|
+
// Lets authenticated users read tracked sets only from workout summaries they own.
|
|
636
|
+
(0, import_pg_core13.pgPolicy)("Enable read access for auth users on tracking_set", {
|
|
637
|
+
for: "select",
|
|
638
|
+
to: authenticatedRole,
|
|
639
|
+
using: ownsExerciseTracking
|
|
640
|
+
}),
|
|
641
|
+
// Lets authenticated users add tracked sets only to their own exercise tracking rows.
|
|
642
|
+
(0, import_pg_core13.pgPolicy)("Enable insert for auth users on tracking_set", {
|
|
643
|
+
for: "insert",
|
|
644
|
+
to: authenticatedRole,
|
|
645
|
+
withCheck: ownsExerciseTracking
|
|
646
|
+
}),
|
|
647
|
+
// Lets authenticated users update tracked sets without moving them outside their own workout.
|
|
648
|
+
(0, import_pg_core13.pgPolicy)("Enable update for auth users on tracking_set", {
|
|
649
|
+
for: "update",
|
|
650
|
+
to: authenticatedRole,
|
|
651
|
+
using: ownsExerciseTracking,
|
|
652
|
+
withCheck: ownsExerciseTracking
|
|
653
|
+
}),
|
|
654
|
+
// Lets authenticated users delete tracked sets only from workout summaries they own.
|
|
655
|
+
(0, import_pg_core13.pgPolicy)("Enable delete for auth users on tracking_set", {
|
|
656
|
+
for: "delete",
|
|
657
|
+
to: authenticatedRole,
|
|
658
|
+
using: ownsExerciseTracking
|
|
659
|
+
})
|
|
660
|
+
];
|
|
661
|
+
}
|
|
662
|
+
__name(trackingSetPolicies, "trackingSetPolicies");
|
|
663
|
+
|
|
664
|
+
// ../../src/infrastructure/db/schema/drizzle/tracking/tracking_set/table.ts
|
|
665
|
+
var trackingSet = trackingSchema.table("tracking_set", {
|
|
666
|
+
id: (0, import_pg_core14.uuid)("id").defaultRandom().notNull(),
|
|
667
|
+
exerciseTrackingId: (0, import_pg_core14.bigint)("exercise_tracking_id", {
|
|
668
|
+
mode: "number"
|
|
669
|
+
}).notNull(),
|
|
670
|
+
setIndex: (0, import_pg_core14.integer)("set_index").notNull(),
|
|
671
|
+
reps: (0, import_pg_core14.integer)("reps").notNull(),
|
|
672
|
+
weight: (0, import_pg_core14.real)("weight").notNull()
|
|
673
|
+
}, (t) => [
|
|
674
|
+
(0, import_pg_core14.primaryKey)({
|
|
675
|
+
name: "tracking_set_pkey",
|
|
676
|
+
columns: [
|
|
677
|
+
t.id
|
|
678
|
+
]
|
|
679
|
+
}),
|
|
680
|
+
(0, import_pg_core14.unique)("tracking_set_exercise_index_unique").on(t.exerciseTrackingId, t.setIndex),
|
|
681
|
+
(0, import_pg_core14.foreignKey)({
|
|
682
|
+
name: "tracking_set_exercise_tracking_id_fkey",
|
|
683
|
+
columns: [
|
|
684
|
+
t.exerciseTrackingId
|
|
685
|
+
],
|
|
686
|
+
foreignColumns: [
|
|
687
|
+
exerciseTracking.id
|
|
688
|
+
]
|
|
689
|
+
}).onUpdate("cascade").onDelete("cascade"),
|
|
690
|
+
(0, import_pg_core14.index)("tracking_set_exercise_tracking_id_idx").on(t.exerciseTrackingId),
|
|
691
|
+
...trackingSetPolicies(t)
|
|
692
|
+
]);
|
|
693
|
+
var trackingSetRelations = (0, import_drizzle_orm12.relations)(trackingSet, ({ one }) => ({
|
|
694
|
+
exerciseTracking: one(exerciseTracking, {
|
|
695
|
+
fields: [
|
|
696
|
+
trackingSet.exerciseTrackingId
|
|
697
|
+
],
|
|
698
|
+
references: [
|
|
699
|
+
exerciseTracking.id
|
|
700
|
+
]
|
|
701
|
+
})
|
|
702
|
+
}));
|
|
703
|
+
|
|
704
|
+
// ../../src/infrastructure/db/schema/drizzle/tracking/exercise_tracking/policies.ts
|
|
705
|
+
var import_drizzle_orm13 = require("drizzle-orm");
|
|
706
|
+
var import_pg_core15 = require("drizzle-orm/pg-core");
|
|
707
|
+
var uid5 = import_drizzle_orm13.sql`"identity"."current_user_id"()`;
|
|
708
|
+
function exerciseTrackingPolicies(t) {
|
|
709
|
+
const owns = import_drizzle_orm13.sql`exists (select 1 from "tracking"."workout_summary" ws where ws."id" = ${t.workoutSummaryId} and ws."user_id" = ${uid5})`;
|
|
710
|
+
return [
|
|
711
|
+
// Lets authenticated users read exercise tracking rows through summaries they own.
|
|
712
|
+
(0, import_pg_core15.pgPolicy)("exercise_tracking_select_by_summary_owner", {
|
|
713
|
+
for: "select",
|
|
714
|
+
to: authenticatedRole,
|
|
715
|
+
using: owns
|
|
716
|
+
}),
|
|
717
|
+
// Lets authenticated users insert exercise tracking rows through summaries they own.
|
|
718
|
+
(0, import_pg_core15.pgPolicy)("exercise_tracking_insert_by_summary_owner", {
|
|
719
|
+
for: "insert",
|
|
720
|
+
to: authenticatedRole,
|
|
721
|
+
withCheck: owns
|
|
722
|
+
}),
|
|
723
|
+
// Lets authenticated users update exercise tracking rows through summaries they own.
|
|
724
|
+
(0, import_pg_core15.pgPolicy)("exercise_tracking_update_by_summary_owner", {
|
|
725
|
+
for: "update",
|
|
726
|
+
to: authenticatedRole,
|
|
727
|
+
using: owns,
|
|
728
|
+
withCheck: owns
|
|
729
|
+
}),
|
|
730
|
+
// Lets authenticated users delete exercise tracking rows through summaries they own.
|
|
731
|
+
(0, import_pg_core15.pgPolicy)("exercise_tracking_delete_by_summary_owner", {
|
|
732
|
+
for: "delete",
|
|
733
|
+
to: authenticatedRole,
|
|
734
|
+
using: owns
|
|
735
|
+
})
|
|
736
|
+
];
|
|
737
|
+
}
|
|
738
|
+
__name(exerciseTrackingPolicies, "exerciseTrackingPolicies");
|
|
739
|
+
|
|
740
|
+
// ../../src/infrastructure/db/schema/drizzle/tracking/exercise_tracking/table.ts
|
|
741
|
+
var import_pg_core17 = require("drizzle-orm/pg-core");
|
|
742
|
+
var exerciseTracking = trackingSchema.table("exercise_tracking", {
|
|
743
|
+
id: (0, import_pg_core16.bigint)("id", {
|
|
744
|
+
mode: "number"
|
|
745
|
+
}).generatedByDefaultAsIdentity({
|
|
746
|
+
name: "exercise_tracking_id_seq"
|
|
747
|
+
}).notNull(),
|
|
748
|
+
workoutSummaryId: (0, import_pg_core16.uuid)("workout_summary_id").notNull(),
|
|
749
|
+
exerciseToSplitId: (0, import_pg_core16.bigint)("exercise_to_split_id", {
|
|
750
|
+
mode: "number"
|
|
751
|
+
}),
|
|
752
|
+
exerciseId: (0, import_pg_core16.bigint)("exercise_id", {
|
|
753
|
+
mode: "number"
|
|
754
|
+
}),
|
|
755
|
+
notes: (0, import_pg_core16.text)("notes")
|
|
756
|
+
}, (t) => [
|
|
757
|
+
(0, import_pg_core16.primaryKey)({
|
|
758
|
+
name: "exercise_tracking_pkey",
|
|
759
|
+
columns: [
|
|
760
|
+
t.id
|
|
761
|
+
]
|
|
762
|
+
}),
|
|
763
|
+
(0, import_pg_core16.foreignKey)({
|
|
764
|
+
name: "exercise_tracking_exercise_to_split_id_fkey",
|
|
765
|
+
columns: [
|
|
766
|
+
t.exerciseToSplitId
|
|
767
|
+
],
|
|
768
|
+
foreignColumns: [
|
|
769
|
+
exerciseToWorkoutSplit.id
|
|
770
|
+
]
|
|
771
|
+
}).onUpdate("cascade").onDelete("cascade"),
|
|
772
|
+
(0, import_pg_core16.foreignKey)({
|
|
773
|
+
name: "exercise_tracking_exercise_id_fkey",
|
|
774
|
+
columns: [
|
|
775
|
+
t.exerciseId
|
|
776
|
+
],
|
|
777
|
+
foreignColumns: [
|
|
778
|
+
exercise.id
|
|
779
|
+
]
|
|
780
|
+
}).onUpdate("cascade").onDelete("cascade"),
|
|
781
|
+
(0, import_pg_core16.foreignKey)({
|
|
782
|
+
name: "exercise_tracking_workout_summary_id_fkey",
|
|
783
|
+
columns: [
|
|
784
|
+
t.workoutSummaryId
|
|
785
|
+
],
|
|
786
|
+
foreignColumns: [
|
|
787
|
+
workoutSummary.id
|
|
788
|
+
]
|
|
789
|
+
}).onUpdate("cascade").onDelete("cascade"),
|
|
790
|
+
(0, import_pg_core17.check)("exercise_tracking_xor_check", import_drizzle_orm14.sql`num_nonnulls(${t.exerciseToSplitId}, ${t.exerciseId}) = 1`),
|
|
791
|
+
(0, import_pg_core16.index)("exercise_tracking_workout_summary_id_idx").on(t.workoutSummaryId),
|
|
792
|
+
...exerciseTrackingPolicies(t)
|
|
793
|
+
]);
|
|
794
|
+
var exerciseTrackingRelations = (0, import_drizzle_orm14.relations)(exerciseTracking, ({ many, one }) => ({
|
|
795
|
+
exerciseToWorkoutSplit: one(exerciseToWorkoutSplit, {
|
|
796
|
+
fields: [
|
|
797
|
+
exerciseTracking.exerciseToSplitId
|
|
798
|
+
],
|
|
799
|
+
references: [
|
|
800
|
+
exerciseToWorkoutSplit.id
|
|
801
|
+
]
|
|
802
|
+
}),
|
|
803
|
+
workoutSummary: one(workoutSummary, {
|
|
804
|
+
fields: [
|
|
805
|
+
exerciseTracking.workoutSummaryId
|
|
806
|
+
],
|
|
807
|
+
references: [
|
|
808
|
+
workoutSummary.id
|
|
809
|
+
]
|
|
810
|
+
}),
|
|
811
|
+
trackingSets: many(trackingSet),
|
|
812
|
+
exercise: one(exercise, {
|
|
813
|
+
fields: [
|
|
814
|
+
exerciseTracking.exerciseId
|
|
815
|
+
],
|
|
816
|
+
references: [
|
|
817
|
+
exercise.id
|
|
818
|
+
]
|
|
819
|
+
})
|
|
820
|
+
}));
|
|
821
|
+
|
|
822
|
+
// ../../src/infrastructure/db/schema/drizzle/tracking/workout_summary/policies.ts
|
|
823
|
+
var import_drizzle_orm15 = require("drizzle-orm");
|
|
824
|
+
var import_pg_core18 = require("drizzle-orm/pg-core");
|
|
825
|
+
var uid6 = import_drizzle_orm15.sql`"identity"."current_user_id"()`;
|
|
826
|
+
function workoutSummaryPolicies(t) {
|
|
827
|
+
return [
|
|
828
|
+
// Lets authenticated users read only their own completed workout summaries.
|
|
829
|
+
(0, import_pg_core18.pgPolicy)("users can read their workout summaries", {
|
|
830
|
+
for: "select",
|
|
831
|
+
to: authenticatedRole,
|
|
832
|
+
using: import_drizzle_orm15.sql`${t.userId} = ${uid6}`
|
|
833
|
+
}),
|
|
834
|
+
// Lets authenticated users insert completed workout summaries only for themselves.
|
|
835
|
+
(0, import_pg_core18.pgPolicy)("users can insert their workout summaries", {
|
|
836
|
+
for: "insert",
|
|
837
|
+
to: authenticatedRole,
|
|
838
|
+
withCheck: import_drizzle_orm15.sql`${t.userId} = ${uid6}`
|
|
839
|
+
}),
|
|
840
|
+
// Lets authenticated users update only their own completed workout summaries.
|
|
841
|
+
(0, import_pg_core18.pgPolicy)("users can update their workout summaries", {
|
|
842
|
+
for: "update",
|
|
843
|
+
to: authenticatedRole,
|
|
844
|
+
using: import_drizzle_orm15.sql`${t.userId} = ${uid6}`,
|
|
845
|
+
withCheck: import_drizzle_orm15.sql`${t.userId} = ${uid6}`
|
|
846
|
+
}),
|
|
847
|
+
// Lets authenticated users delete only their own completed workout summaries.
|
|
848
|
+
(0, import_pg_core18.pgPolicy)("users can delete their workout summaries", {
|
|
849
|
+
for: "delete",
|
|
850
|
+
to: authenticatedRole,
|
|
851
|
+
using: import_drizzle_orm15.sql`${t.userId} = ${uid6}`
|
|
852
|
+
})
|
|
853
|
+
];
|
|
854
|
+
}
|
|
855
|
+
__name(workoutSummaryPolicies, "workoutSummaryPolicies");
|
|
856
|
+
|
|
857
|
+
// ../../src/infrastructure/db/schema/drizzle/tracking/workout_summary/table.ts
|
|
858
|
+
var workoutSummary = trackingSchema.table("workout_summary", {
|
|
859
|
+
id: (0, import_pg_core19.uuid)("id").defaultRandom().notNull(),
|
|
860
|
+
userId: (0, import_pg_core19.uuid)("user_id").notNull(),
|
|
861
|
+
workoutSplitId: (0, import_pg_core19.bigint)("workout_split_id", {
|
|
862
|
+
mode: "number"
|
|
863
|
+
}).notNull(),
|
|
864
|
+
workoutStartUtc: (0, import_pg_core19.timestamp)("workout_start_utc", {
|
|
865
|
+
withTimezone: true
|
|
866
|
+
}).notNull(),
|
|
867
|
+
workoutEndUtc: (0, import_pg_core19.timestamp)("workout_end_utc", {
|
|
868
|
+
withTimezone: true
|
|
869
|
+
}).notNull(),
|
|
870
|
+
createdAt: (0, import_pg_core19.timestamp)("created_at", {
|
|
871
|
+
withTimezone: true
|
|
872
|
+
}).defaultNow().notNull()
|
|
873
|
+
}, (t) => [
|
|
874
|
+
(0, import_pg_core19.primaryKey)({
|
|
875
|
+
name: "workout_summary_pkey",
|
|
876
|
+
columns: [
|
|
877
|
+
t.id
|
|
878
|
+
]
|
|
879
|
+
}),
|
|
880
|
+
(0, import_pg_core19.foreignKey)({
|
|
881
|
+
name: "workout_summary_user_id_fkey",
|
|
882
|
+
columns: [
|
|
883
|
+
t.userId
|
|
884
|
+
],
|
|
885
|
+
foreignColumns: [
|
|
886
|
+
user.id
|
|
887
|
+
]
|
|
888
|
+
}).onDelete("cascade"),
|
|
889
|
+
(0, import_pg_core19.foreignKey)({
|
|
890
|
+
name: "workout_summary_workout_split_id_fkey",
|
|
891
|
+
columns: [
|
|
892
|
+
t.workoutSplitId
|
|
893
|
+
],
|
|
894
|
+
foreignColumns: [
|
|
895
|
+
workoutSplit.id
|
|
896
|
+
]
|
|
897
|
+
}).onUpdate("cascade").onDelete("cascade"),
|
|
898
|
+
(0, import_pg_core19.index)("workout_summary_start_date_idx").on(import_drizzle_orm16.sql`((${t.workoutStartUtc} at time zone 'UTC')::date)`),
|
|
899
|
+
(0, import_pg_core19.index)("workout_summary_user_start_utc_idx").on(t.userId, t.workoutStartUtc.desc().nullsFirst()),
|
|
900
|
+
...workoutSummaryPolicies(t)
|
|
901
|
+
]);
|
|
902
|
+
var workoutSummaryRelations = (0, import_drizzle_orm16.relations)(workoutSummary, ({ many, one }) => ({
|
|
903
|
+
user: one(user, {
|
|
904
|
+
fields: [
|
|
905
|
+
workoutSummary.userId
|
|
906
|
+
],
|
|
907
|
+
references: [
|
|
908
|
+
user.id
|
|
909
|
+
]
|
|
910
|
+
}),
|
|
911
|
+
workoutSplit: one(workoutSplit, {
|
|
912
|
+
fields: [
|
|
913
|
+
workoutSummary.workoutSplitId
|
|
914
|
+
],
|
|
915
|
+
references: [
|
|
916
|
+
workoutSplit.id
|
|
917
|
+
]
|
|
918
|
+
}),
|
|
919
|
+
exerciseTrackings: many(exerciseTracking)
|
|
920
|
+
}));
|
|
921
|
+
|
|
922
|
+
// ../../src/infrastructure/db/schema/drizzle/workout/workout_plan/table.ts
|
|
923
|
+
var import_drizzle_orm18 = require("drizzle-orm");
|
|
924
|
+
var import_pg_core21 = require("drizzle-orm/pg-core");
|
|
925
|
+
|
|
926
|
+
// ../../src/infrastructure/db/schema/drizzle/workout/workout_plan/policies.ts
|
|
927
|
+
var import_drizzle_orm17 = require("drizzle-orm");
|
|
928
|
+
var import_pg_core20 = require("drizzle-orm/pg-core");
|
|
929
|
+
var uid7 = import_drizzle_orm17.sql`"identity"."current_user_id"()`;
|
|
930
|
+
function workoutPlanPolicies(t) {
|
|
931
|
+
return [
|
|
932
|
+
// Lets authenticated users read only workout plans they own.
|
|
933
|
+
(0, import_pg_core20.pgPolicy)("Enable read access for auth users on workout_plan", {
|
|
934
|
+
for: "select",
|
|
935
|
+
to: authenticatedRole,
|
|
936
|
+
using: import_drizzle_orm17.sql`${uid7} = ${t.userId}`
|
|
937
|
+
}),
|
|
938
|
+
// Lets authenticated users create workout plans only for themselves.
|
|
939
|
+
(0, import_pg_core20.pgPolicy)("Enable insert for auth users on workout_plan", {
|
|
940
|
+
for: "insert",
|
|
941
|
+
to: authenticatedRole,
|
|
942
|
+
withCheck: import_drizzle_orm17.sql`${uid7} = ${t.userId}`
|
|
943
|
+
}),
|
|
944
|
+
// Lets authenticated users update only workout plans they own.
|
|
945
|
+
(0, import_pg_core20.pgPolicy)("Enable update for auth users on workout_plan", {
|
|
946
|
+
for: "update",
|
|
947
|
+
to: authenticatedRole,
|
|
948
|
+
using: import_drizzle_orm17.sql`${uid7} = ${t.userId}`,
|
|
949
|
+
withCheck: import_drizzle_orm17.sql`${uid7} = ${t.userId}`
|
|
950
|
+
}),
|
|
951
|
+
// Lets authenticated users delete only workout plans they own.
|
|
952
|
+
(0, import_pg_core20.pgPolicy)("Enable delete for auth users on workout_plan", {
|
|
953
|
+
for: "delete",
|
|
954
|
+
to: authenticatedRole,
|
|
955
|
+
using: import_drizzle_orm17.sql`${uid7} = ${t.userId}`
|
|
956
|
+
})
|
|
957
|
+
];
|
|
958
|
+
}
|
|
959
|
+
__name(workoutPlanPolicies, "workoutPlanPolicies");
|
|
960
|
+
|
|
961
|
+
// ../../src/infrastructure/db/schema/drizzle/workout/workout_plan/table.ts
|
|
962
|
+
var workoutPlan = workoutSchema.table("workout_plan", {
|
|
963
|
+
id: (0, import_pg_core21.bigint)("id", {
|
|
964
|
+
mode: "number"
|
|
965
|
+
}).generatedByDefaultAsIdentity({
|
|
966
|
+
name: "workout_plan_id_seq"
|
|
967
|
+
}).notNull(),
|
|
968
|
+
userId: (0, import_pg_core21.uuid)("user_id").notNull(),
|
|
969
|
+
isActive: (0, import_pg_core21.boolean)("is_active").default(true).notNull(),
|
|
970
|
+
updatedAt: (0, import_pg_core21.timestamp)("updated_at", {
|
|
971
|
+
withTimezone: true
|
|
972
|
+
}).default(import_drizzle_orm18.sql`(now() AT TIME ZONE 'utc')`).notNull(),
|
|
973
|
+
createdAt: (0, import_pg_core21.timestamp)("created_at", {
|
|
974
|
+
withTimezone: true
|
|
975
|
+
}).defaultNow().notNull()
|
|
976
|
+
}, (t) => [
|
|
977
|
+
(0, import_pg_core21.primaryKey)({
|
|
978
|
+
name: "workout_plan_pkey",
|
|
979
|
+
columns: [
|
|
980
|
+
t.id
|
|
981
|
+
]
|
|
982
|
+
}),
|
|
983
|
+
(0, import_pg_core21.foreignKey)({
|
|
984
|
+
name: "workout_plan_user_id_fkey",
|
|
985
|
+
columns: [
|
|
986
|
+
t.userId
|
|
987
|
+
],
|
|
988
|
+
foreignColumns: [
|
|
989
|
+
user.id
|
|
990
|
+
]
|
|
991
|
+
}).onUpdate("cascade").onDelete("cascade"),
|
|
992
|
+
(0, import_pg_core21.uniqueIndex)("uq_workout_plan_active_user").on(t.userId).where(import_drizzle_orm18.sql`${t.isActive}`),
|
|
993
|
+
...workoutPlanPolicies(t)
|
|
994
|
+
]);
|
|
995
|
+
var workoutPlanRelations = (0, import_drizzle_orm18.relations)(workoutPlan, ({ many, one }) => ({
|
|
996
|
+
owner: one(user, {
|
|
997
|
+
fields: [
|
|
998
|
+
workoutPlan.userId
|
|
999
|
+
],
|
|
1000
|
+
references: [
|
|
1001
|
+
user.id
|
|
1002
|
+
],
|
|
1003
|
+
relationName: "workoutPlanOwner"
|
|
1004
|
+
}),
|
|
1005
|
+
splits: many(workoutSplit)
|
|
1006
|
+
}));
|
|
1007
|
+
|
|
1008
|
+
// ../../src/infrastructure/db/schema/drizzle/workout/workout_split/policies.ts
|
|
1009
|
+
var import_drizzle_orm19 = require("drizzle-orm");
|
|
1010
|
+
var import_pg_core22 = require("drizzle-orm/pg-core");
|
|
1011
|
+
var uid8 = import_drizzle_orm19.sql`"identity"."current_user_id"()`;
|
|
1012
|
+
function workoutSplitPolicies(t) {
|
|
1013
|
+
const owns = import_drizzle_orm19.sql`${uid8} = (select wp."user_id" from "workout"."workout_plan" wp where wp."id" = ${t.workoutId})`;
|
|
1014
|
+
const ownsForDelete = import_drizzle_orm19.sql`exists (select 1 from "workout"."workout_plan" wp where wp."id" = ${t.workoutId} and wp."user_id" = ${uid8})`;
|
|
1015
|
+
return [
|
|
1016
|
+
// Lets authenticated users read splits belonging to their own plans.
|
|
1017
|
+
(0, import_pg_core22.pgPolicy)("Enable read access for auth users on workout_split", {
|
|
1018
|
+
for: "select",
|
|
1019
|
+
to: authenticatedRole,
|
|
1020
|
+
using: owns
|
|
1021
|
+
}),
|
|
1022
|
+
// Lets authenticated users add splits only to their own plans.
|
|
1023
|
+
(0, import_pg_core22.pgPolicy)("Enable insert for auth users on workout_split", {
|
|
1024
|
+
for: "insert",
|
|
1025
|
+
to: authenticatedRole,
|
|
1026
|
+
withCheck: owns
|
|
1027
|
+
}),
|
|
1028
|
+
// Lets authenticated users update splits only within their own plans.
|
|
1029
|
+
(0, import_pg_core22.pgPolicy)("Enable update for auth users on workout_split", {
|
|
1030
|
+
for: "update",
|
|
1031
|
+
to: authenticatedRole,
|
|
1032
|
+
using: owns,
|
|
1033
|
+
withCheck: owns
|
|
1034
|
+
}),
|
|
1035
|
+
// Lets authenticated users delete splits only from their own plans.
|
|
1036
|
+
(0, import_pg_core22.pgPolicy)("Enable delete for auth users on workout_split", {
|
|
1037
|
+
for: "delete",
|
|
1038
|
+
to: authenticatedRole,
|
|
1039
|
+
using: ownsForDelete
|
|
1040
|
+
})
|
|
1041
|
+
];
|
|
1042
|
+
}
|
|
1043
|
+
__name(workoutSplitPolicies, "workoutSplitPolicies");
|
|
1044
|
+
|
|
1045
|
+
// ../../src/infrastructure/db/schema/drizzle/workout/workout_split/table.ts
|
|
1046
|
+
var workoutSplit = workoutSchema.table("workout_split", {
|
|
1047
|
+
id: (0, import_pg_core23.bigint)("id", {
|
|
1048
|
+
mode: "number"
|
|
1049
|
+
}).generatedByDefaultAsIdentity({
|
|
1050
|
+
name: "workout_split_id_seq"
|
|
1051
|
+
}).notNull(),
|
|
1052
|
+
workoutId: (0, import_pg_core23.bigint)("workout_id", {
|
|
1053
|
+
mode: "number"
|
|
1054
|
+
}).notNull(),
|
|
1055
|
+
name: (0, import_pg_core23.text)("name").notNull(),
|
|
1056
|
+
createdAt: (0, import_pg_core23.timestamp)("created_at", {
|
|
1057
|
+
withTimezone: true
|
|
1058
|
+
}).default(import_drizzle_orm20.sql`(now() AT TIME ZONE 'utc')`).notNull(),
|
|
1059
|
+
isActive: (0, import_pg_core23.boolean)("is_active").default(true).notNull()
|
|
1060
|
+
}, (t) => [
|
|
1061
|
+
(0, import_pg_core23.primaryKey)({
|
|
1062
|
+
name: "workout_split_pkey",
|
|
1063
|
+
columns: [
|
|
1064
|
+
t.id
|
|
1065
|
+
]
|
|
1066
|
+
}),
|
|
1067
|
+
(0, import_pg_core23.unique)("uq_workout_split_plan_name").on(t.workoutId, t.name),
|
|
1068
|
+
(0, import_pg_core23.foreignKey)({
|
|
1069
|
+
name: "workout_split_workout_id_fkey",
|
|
1070
|
+
columns: [
|
|
1071
|
+
t.workoutId
|
|
1072
|
+
],
|
|
1073
|
+
foreignColumns: [
|
|
1074
|
+
workoutPlan.id
|
|
1075
|
+
]
|
|
1076
|
+
}).onUpdate("cascade").onDelete("cascade"),
|
|
1077
|
+
(0, import_pg_core23.index)("workout_split_workout_id_idx").on(t.workoutId),
|
|
1078
|
+
...workoutSplitPolicies(t)
|
|
1079
|
+
]);
|
|
1080
|
+
var workoutSplitRelations = (0, import_drizzle_orm20.relations)(workoutSplit, ({ many, one }) => ({
|
|
1081
|
+
workoutPlan: one(workoutPlan, {
|
|
1082
|
+
fields: [
|
|
1083
|
+
workoutSplit.workoutId
|
|
1084
|
+
],
|
|
1085
|
+
references: [
|
|
1086
|
+
workoutPlan.id
|
|
1087
|
+
]
|
|
1088
|
+
}),
|
|
1089
|
+
exerciseAssignments: many(exerciseToWorkoutSplit),
|
|
1090
|
+
workoutSummaries: many(workoutSummary),
|
|
1091
|
+
splitInformation: many(userSplitInformation)
|
|
1092
|
+
}));
|
|
1093
|
+
|
|
1094
|
+
// ../../src/infrastructure/db/schema/drizzle/reminders/user_split_information/table.ts
|
|
1095
|
+
var userSplitInformation = remindersSchema.table("user_split_information", {
|
|
1096
|
+
id: (0, import_pg_core24.bigint)("id", {
|
|
1097
|
+
mode: "number"
|
|
1098
|
+
}).generatedByDefaultAsIdentity({
|
|
1099
|
+
name: "user_split_information_id_seq"
|
|
1100
|
+
}).notNull(),
|
|
1101
|
+
userId: (0, import_pg_core24.uuid)("user_id").notNull(),
|
|
1102
|
+
workoutSplitId: (0, import_pg_core24.bigint)("workout_split_id", {
|
|
1103
|
+
mode: "number"
|
|
1104
|
+
}).notNull(),
|
|
1105
|
+
estimatedTimeUtc: (0, import_pg_core24.timestamp)("estimated_time_utc", {
|
|
1106
|
+
withTimezone: true
|
|
1107
|
+
}).notNull(),
|
|
1108
|
+
confidence: (0, import_pg_core24.numeric)("confidence", {
|
|
1109
|
+
precision: 3,
|
|
1110
|
+
scale: 2
|
|
1111
|
+
}).default("1.00").notNull(),
|
|
1112
|
+
lastComputedAt: (0, import_pg_core24.timestamp)("last_computed_at", {
|
|
1113
|
+
withTimezone: true
|
|
1114
|
+
}).default(import_drizzle_orm21.sql`timezone('UTC', now())`).notNull(),
|
|
1115
|
+
preferredWeekday: (0, import_pg_core24.integer)("preferred_weekday")
|
|
1116
|
+
}, (t) => [
|
|
1117
|
+
(0, import_pg_core24.primaryKey)({
|
|
1118
|
+
name: "user_split_information_pkey",
|
|
1119
|
+
columns: [
|
|
1120
|
+
t.id
|
|
1121
|
+
]
|
|
1122
|
+
}),
|
|
1123
|
+
(0, import_pg_core24.unique)("user_split_information_user_id_workout_split_id_key").on(t.userId, t.workoutSplitId),
|
|
1124
|
+
(0, import_pg_core24.foreignKey)({
|
|
1125
|
+
name: "user_split_information_user_id_fkey",
|
|
1126
|
+
columns: [
|
|
1127
|
+
t.userId
|
|
1128
|
+
],
|
|
1129
|
+
foreignColumns: [
|
|
1130
|
+
user.id
|
|
1131
|
+
]
|
|
1132
|
+
}).onDelete("cascade"),
|
|
1133
|
+
(0, import_pg_core24.foreignKey)({
|
|
1134
|
+
name: "user_split_information_workout_split_id_fkey",
|
|
1135
|
+
columns: [
|
|
1136
|
+
t.workoutSplitId
|
|
1137
|
+
],
|
|
1138
|
+
foreignColumns: [
|
|
1139
|
+
workoutSplit.id
|
|
1140
|
+
]
|
|
1141
|
+
}).onDelete("cascade"),
|
|
1142
|
+
(0, import_pg_core24.index)("user_split_information_confidence_idx").on(t.preferredWeekday, t.confidence).where(import_drizzle_orm21.sql`${t.confidence} >= 0.60`),
|
|
1143
|
+
(0, import_pg_core24.index)("user_split_information_user_weekday_idx").on(t.userId, t.preferredWeekday).where(import_drizzle_orm21.sql`${t.preferredWeekday} is not null`)
|
|
1144
|
+
]).enableRLS();
|
|
1145
|
+
var userSplitInformationRelations = (0, import_drizzle_orm21.relations)(userSplitInformation, ({ one }) => ({
|
|
1146
|
+
user: one(user, {
|
|
1147
|
+
fields: [
|
|
1148
|
+
userSplitInformation.userId
|
|
1149
|
+
],
|
|
1150
|
+
references: [
|
|
1151
|
+
user.id
|
|
1152
|
+
]
|
|
1153
|
+
}),
|
|
1154
|
+
workoutSplit: one(workoutSplit, {
|
|
1155
|
+
fields: [
|
|
1156
|
+
userSplitInformation.workoutSplitId
|
|
1157
|
+
],
|
|
1158
|
+
references: [
|
|
1159
|
+
workoutSplit.id
|
|
1160
|
+
]
|
|
1161
|
+
})
|
|
1162
|
+
}));
|
|
1163
|
+
|
|
1164
|
+
// ../../src/infrastructure/db/schema/drizzle/tracking/aerobic_tracking/table.ts
|
|
1165
|
+
var import_drizzle_orm23 = require("drizzle-orm");
|
|
1166
|
+
var import_pg_core26 = require("drizzle-orm/pg-core");
|
|
1167
|
+
|
|
1168
|
+
// ../../src/infrastructure/db/schema/drizzle/tracking/aerobic_tracking/policies.ts
|
|
1169
|
+
var import_drizzle_orm22 = require("drizzle-orm");
|
|
1170
|
+
var import_pg_core25 = require("drizzle-orm/pg-core");
|
|
1171
|
+
var uid9 = import_drizzle_orm22.sql`"identity"."current_user_id"()`;
|
|
1172
|
+
function aerobicTrackingPolicies(t) {
|
|
1173
|
+
return [
|
|
1174
|
+
// Lets authenticated users read only their own aerobic tracking rows.
|
|
1175
|
+
(0, import_pg_core25.pgPolicy)("Enable read access for auth users on aerobic_tracking", {
|
|
1176
|
+
for: "select",
|
|
1177
|
+
to: authenticatedRole,
|
|
1178
|
+
using: import_drizzle_orm22.sql`${uid9} = ${t.userId}`
|
|
1179
|
+
}),
|
|
1180
|
+
// Lets authenticated users insert aerobic tracking rows only for themselves.
|
|
1181
|
+
(0, import_pg_core25.pgPolicy)("Enable insert for auth users on aerobic_tracking", {
|
|
1182
|
+
for: "insert",
|
|
1183
|
+
to: authenticatedRole,
|
|
1184
|
+
withCheck: import_drizzle_orm22.sql`${uid9} = ${t.userId}`
|
|
1185
|
+
}),
|
|
1186
|
+
// Lets authenticated users update only their own aerobic tracking rows.
|
|
1187
|
+
(0, import_pg_core25.pgPolicy)("Enable update for auth users on aerobic_tracking", {
|
|
1188
|
+
for: "update",
|
|
1189
|
+
to: authenticatedRole,
|
|
1190
|
+
using: import_drizzle_orm22.sql`${uid9} = ${t.userId}`,
|
|
1191
|
+
withCheck: import_drizzle_orm22.sql`${uid9} = ${t.userId}`
|
|
1192
|
+
}),
|
|
1193
|
+
// Lets authenticated users delete only their own aerobic tracking rows.
|
|
1194
|
+
(0, import_pg_core25.pgPolicy)("Enable delete for auth users on aerobic_tracking", {
|
|
1195
|
+
for: "delete",
|
|
1196
|
+
to: authenticatedRole,
|
|
1197
|
+
using: import_drizzle_orm22.sql`${uid9} = ${t.userId}`
|
|
1198
|
+
})
|
|
1199
|
+
];
|
|
1200
|
+
}
|
|
1201
|
+
__name(aerobicTrackingPolicies, "aerobicTrackingPolicies");
|
|
1202
|
+
|
|
1203
|
+
// ../../src/infrastructure/db/schema/drizzle/tracking/aerobic_tracking/table.ts
|
|
1204
|
+
var aerobicTracking = trackingSchema.table("aerobic_tracking", {
|
|
1205
|
+
id: (0, import_pg_core26.bigint)("id", {
|
|
1206
|
+
mode: "number"
|
|
1207
|
+
}).generatedByDefaultAsIdentity({
|
|
1208
|
+
name: "aerobic_tracking_id_seq"
|
|
1209
|
+
}).notNull(),
|
|
1210
|
+
userId: (0, import_pg_core26.uuid)("user_id").notNull(),
|
|
1211
|
+
type: (0, import_pg_core26.text)("type").notNull(),
|
|
1212
|
+
durationSec: (0, import_pg_core26.bigint)("duration_sec", {
|
|
1213
|
+
mode: "number"
|
|
1214
|
+
}).default(0).notNull(),
|
|
1215
|
+
workoutTimeUtc: (0, import_pg_core26.timestamp)("workout_time_utc", {
|
|
1216
|
+
withTimezone: true
|
|
1217
|
+
}).default(import_drizzle_orm23.sql`(now() AT TIME ZONE 'utc')`).notNull()
|
|
1218
|
+
}, (t) => [
|
|
1219
|
+
(0, import_pg_core26.primaryKey)({
|
|
1220
|
+
name: "aerobic_tracking_pkey",
|
|
1221
|
+
columns: [
|
|
1222
|
+
t.id
|
|
1223
|
+
]
|
|
1224
|
+
}),
|
|
1225
|
+
(0, import_pg_core26.foreignKey)({
|
|
1226
|
+
name: "aerobic_tracking_user_id_fkey",
|
|
1227
|
+
columns: [
|
|
1228
|
+
t.userId
|
|
1229
|
+
],
|
|
1230
|
+
foreignColumns: [
|
|
1231
|
+
user.id
|
|
1232
|
+
]
|
|
1233
|
+
}).onUpdate("cascade").onDelete("cascade"),
|
|
1234
|
+
(0, import_pg_core26.index)("aerobic_tracking_user_id_workout_time_utc_idx").on(t.userId, t.workoutTimeUtc.desc().nullsFirst()),
|
|
1235
|
+
...aerobicTrackingPolicies(t)
|
|
1236
|
+
]);
|
|
1237
|
+
var aerobicTrackingRelations = (0, import_drizzle_orm23.relations)(aerobicTracking, ({ one }) => ({
|
|
1238
|
+
user: one(user, {
|
|
1239
|
+
fields: [
|
|
1240
|
+
aerobicTracking.userId
|
|
1241
|
+
],
|
|
1242
|
+
references: [
|
|
1243
|
+
user.id
|
|
1244
|
+
]
|
|
1245
|
+
})
|
|
1246
|
+
}));
|
|
1247
|
+
|
|
1248
|
+
// ../../src/infrastructure/db/schema/drizzle/identity/oauth_account/table.ts
|
|
1249
|
+
var import_drizzle_orm25 = require("drizzle-orm");
|
|
1250
|
+
var import_pg_core28 = require("drizzle-orm/pg-core");
|
|
1251
|
+
|
|
1252
|
+
// ../../src/infrastructure/db/schema/drizzle/identity/oauth_account/policies.ts
|
|
1253
|
+
var import_drizzle_orm24 = require("drizzle-orm");
|
|
1254
|
+
var import_pg_core27 = require("drizzle-orm/pg-core");
|
|
1255
|
+
var currentUserId3 = import_drizzle_orm24.sql`"identity"."current_user_id"()`;
|
|
1256
|
+
function oauthAccountPolicies(table) {
|
|
1257
|
+
return [
|
|
1258
|
+
// Lets authenticated users read only OAuth accounts linked to themselves.
|
|
1259
|
+
(0, import_pg_core27.pgPolicy)("Enable read access for auth users on oauth_account", {
|
|
1260
|
+
for: "select",
|
|
1261
|
+
to: authenticatedRole,
|
|
1262
|
+
using: import_drizzle_orm24.sql`${currentUserId3} = ${table.userId}`
|
|
1263
|
+
}),
|
|
1264
|
+
// Lets authenticated users link OAuth accounts only to themselves.
|
|
1265
|
+
(0, import_pg_core27.pgPolicy)("Enable insert for auth users on oauth_account", {
|
|
1266
|
+
for: "insert",
|
|
1267
|
+
to: authenticatedRole,
|
|
1268
|
+
withCheck: import_drizzle_orm24.sql`${currentUserId3} = ${table.userId}`
|
|
1269
|
+
}),
|
|
1270
|
+
// Lets authenticated users update only OAuth accounts linked to themselves.
|
|
1271
|
+
(0, import_pg_core27.pgPolicy)("Enable update for auth users on oauth_account", {
|
|
1272
|
+
for: "update",
|
|
1273
|
+
to: authenticatedRole,
|
|
1274
|
+
using: import_drizzle_orm24.sql`${currentUserId3} = ${table.userId}`,
|
|
1275
|
+
withCheck: import_drizzle_orm24.sql`${currentUserId3} = ${table.userId}`
|
|
1276
|
+
}),
|
|
1277
|
+
// Lets authenticated users delete only OAuth accounts linked to themselves.
|
|
1278
|
+
(0, import_pg_core27.pgPolicy)("Enable delete for auth users on oauth_account", {
|
|
1279
|
+
for: "delete",
|
|
1280
|
+
to: authenticatedRole,
|
|
1281
|
+
using: import_drizzle_orm24.sql`${currentUserId3} = ${table.userId}`
|
|
1282
|
+
})
|
|
1283
|
+
];
|
|
1284
|
+
}
|
|
1285
|
+
__name(oauthAccountPolicies, "oauthAccountPolicies");
|
|
1286
|
+
|
|
1287
|
+
// ../../src/infrastructure/db/schema/drizzle/identity/oauth_account/table.ts
|
|
1288
|
+
var oauthAccount = identitySchema.table("oauth_account", {
|
|
1289
|
+
id: (0, import_pg_core28.uuid)("id").defaultRandom().notNull(),
|
|
1290
|
+
userId: (0, import_pg_core28.uuid)("user_id").notNull(),
|
|
1291
|
+
provider: (0, import_pg_core28.text)("provider").notNull(),
|
|
1292
|
+
providerUserId: (0, import_pg_core28.text)("provider_user_id").notNull(),
|
|
1293
|
+
providerEmail: (0, import_pg_core28.text)("provider_email").notNull(),
|
|
1294
|
+
linkedAt: (0, import_pg_core28.timestamp)("linked_at", {
|
|
1295
|
+
withTimezone: true
|
|
1296
|
+
}).default(import_drizzle_orm25.sql`(now() AT TIME ZONE 'utc')`).notNull(),
|
|
1297
|
+
missingFields: (0, import_pg_core28.text)("missing_fields")
|
|
1298
|
+
}, (t) => [
|
|
1299
|
+
(0, import_pg_core28.primaryKey)({
|
|
1300
|
+
name: "oauth_account_pkey",
|
|
1301
|
+
columns: [
|
|
1302
|
+
t.id
|
|
1303
|
+
]
|
|
1304
|
+
}),
|
|
1305
|
+
(0, import_pg_core28.unique)("oauth_account_provider_user_unique").on(t.provider, t.providerUserId),
|
|
1306
|
+
(0, import_pg_core28.foreignKey)({
|
|
1307
|
+
name: "oauth_account_user_id_fkey",
|
|
1308
|
+
columns: [
|
|
1309
|
+
t.userId
|
|
1310
|
+
],
|
|
1311
|
+
foreignColumns: [
|
|
1312
|
+
user.id
|
|
1313
|
+
]
|
|
1314
|
+
}).onUpdate("cascade").onDelete("cascade"),
|
|
1315
|
+
...oauthAccountPolicies(t)
|
|
1316
|
+
]);
|
|
1317
|
+
var oauthAccountRelations = (0, import_drizzle_orm25.relations)(oauthAccount, ({ one }) => ({
|
|
1318
|
+
user: one(user, {
|
|
1319
|
+
fields: [
|
|
1320
|
+
oauthAccount.userId
|
|
1321
|
+
],
|
|
1322
|
+
references: [
|
|
1323
|
+
user.id
|
|
1324
|
+
]
|
|
1325
|
+
})
|
|
1326
|
+
}));
|
|
1327
|
+
|
|
1328
|
+
// ../../src/infrastructure/db/schema/drizzle/identity/user/policies.ts
|
|
1329
|
+
var import_drizzle_orm26 = require("drizzle-orm");
|
|
1330
|
+
var import_pg_core29 = require("drizzle-orm/pg-core");
|
|
1331
|
+
var currentUserId4 = import_drizzle_orm26.sql`"identity"."current_user_id"()`;
|
|
1332
|
+
function userPolicies(table) {
|
|
1333
|
+
return [
|
|
1334
|
+
// Lets an authenticated user read their own profile.
|
|
1335
|
+
(0, import_pg_core29.pgPolicy)("Enable read access for auth users on own profile", {
|
|
1336
|
+
for: "select",
|
|
1337
|
+
to: authenticatedRole,
|
|
1338
|
+
using: import_drizzle_orm26.sql`${currentUserId4} = ${table.id}`
|
|
1339
|
+
}),
|
|
1340
|
+
// Lets a message receiver read the profile of a sender in their inbox.
|
|
1341
|
+
(0, import_pg_core29.pgPolicy)("Allow user to view senders in their messages", {
|
|
1342
|
+
for: "select",
|
|
1343
|
+
to: authenticatedRole,
|
|
1344
|
+
using: import_drizzle_orm26.sql`exists (select 1 from "messages"."message" m where m."sender_id" = ${table.id} and m."receiver_id" = ${currentUserId4})`
|
|
1345
|
+
}),
|
|
1346
|
+
// Lets an authenticated user create only their own profile row.
|
|
1347
|
+
(0, import_pg_core29.pgPolicy)("Enable insert for auth users on own profile", {
|
|
1348
|
+
for: "insert",
|
|
1349
|
+
to: authenticatedRole,
|
|
1350
|
+
withCheck: import_drizzle_orm26.sql`${currentUserId4} = ${table.id}`
|
|
1351
|
+
}),
|
|
1352
|
+
// Preserves the legacy public self-registration policy for compatibility.
|
|
1353
|
+
(0, import_pg_core29.pgPolicy)("Enable insert for public users on own profile", {
|
|
1354
|
+
for: "insert",
|
|
1355
|
+
to: "public",
|
|
1356
|
+
withCheck: import_drizzle_orm26.sql`${currentUserId4} = ${table.id}`
|
|
1357
|
+
}),
|
|
1358
|
+
// Lets an authenticated user update only their own profile.
|
|
1359
|
+
(0, import_pg_core29.pgPolicy)("Enable update for auth users on own profile", {
|
|
1360
|
+
for: "update",
|
|
1361
|
+
to: authenticatedRole,
|
|
1362
|
+
using: import_drizzle_orm26.sql`${currentUserId4} = ${table.id}`,
|
|
1363
|
+
withCheck: import_drizzle_orm26.sql`${currentUserId4} = ${table.id}`
|
|
1364
|
+
}),
|
|
1365
|
+
// Lets an authenticated user delete only their own profile.
|
|
1366
|
+
(0, import_pg_core29.pgPolicy)("Enable delete for auth users on own profile", {
|
|
1367
|
+
for: "delete",
|
|
1368
|
+
to: authenticatedRole,
|
|
1369
|
+
using: import_drizzle_orm26.sql`${currentUserId4} = ${table.id}`
|
|
1370
|
+
})
|
|
1371
|
+
];
|
|
1372
|
+
}
|
|
1373
|
+
__name(userPolicies, "userPolicies");
|
|
1374
|
+
|
|
1375
|
+
// ../../src/infrastructure/db/schema/drizzle/identity/user/table.ts
|
|
1376
|
+
var user = identitySchema.table("user", {
|
|
1377
|
+
username: (0, import_pg_core30.text)("username").notNull(),
|
|
1378
|
+
email: (0, import_pg_core30.text)("email").notNull(),
|
|
1379
|
+
name: (0, import_pg_core30.text)("name").notNull(),
|
|
1380
|
+
gender: (0, import_pg_core30.text)("gender").default("Unknown").notNull(),
|
|
1381
|
+
createdAt: (0, import_pg_core30.timestamp)("created_at", {
|
|
1382
|
+
withTimezone: true
|
|
1383
|
+
}).default(import_drizzle_orm27.sql`(now() AT TIME ZONE 'utc')`).notNull(),
|
|
1384
|
+
updatedAt: (0, import_pg_core30.timestamp)("updated_at", {
|
|
1385
|
+
withTimezone: true
|
|
1386
|
+
}).default(import_drizzle_orm27.sql`(now() AT TIME ZONE 'utc')`).notNull(),
|
|
1387
|
+
profilePicPath: (0, import_pg_core30.text)("profile_pic_path"),
|
|
1388
|
+
id: (0, import_pg_core30.uuid)("id").defaultRandom().notNull(),
|
|
1389
|
+
pushToken: (0, import_pg_core30.text)("push_token"),
|
|
1390
|
+
passwordHash: (0, import_pg_core30.text)("password_hash"),
|
|
1391
|
+
role: (0, import_pg_core30.text)("role").default("User").notNull(),
|
|
1392
|
+
tokenVersion: (0, import_pg_core30.bigint)("token_version", {
|
|
1393
|
+
mode: "number"
|
|
1394
|
+
}).default(0).notNull(),
|
|
1395
|
+
isVerified: (0, import_pg_core30.boolean)("is_verified").default(false).notNull(),
|
|
1396
|
+
authProvider: (0, import_pg_core30.text)("auth_provider").default("app").notNull(),
|
|
1397
|
+
lastLogin: (0, import_pg_core30.timestamp)("last_login", {
|
|
1398
|
+
withTimezone: true
|
|
1399
|
+
})
|
|
1400
|
+
}, (t) => [
|
|
1401
|
+
(0, import_pg_core30.primaryKey)({
|
|
1402
|
+
name: "user_pkey",
|
|
1403
|
+
columns: [
|
|
1404
|
+
t.id
|
|
1405
|
+
]
|
|
1406
|
+
}),
|
|
1407
|
+
(0, import_pg_core30.uniqueIndex)("user_email_ci_unique").on(import_drizzle_orm27.sql`lower(trim(both from ${t.email}))`),
|
|
1408
|
+
(0, import_pg_core30.uniqueIndex)("user_username_ci_unique").on(import_drizzle_orm27.sql`lower(trim(both from ${t.username}))`),
|
|
1409
|
+
...userPolicies(t)
|
|
1410
|
+
]);
|
|
1411
|
+
var userRelations = (0, import_drizzle_orm27.relations)(user, ({ many, one }) => ({
|
|
1412
|
+
oauthAccounts: many(oauthAccount),
|
|
1413
|
+
ownedWorkoutPlans: many(workoutPlan, {
|
|
1414
|
+
relationName: "workoutPlanOwner"
|
|
1415
|
+
}),
|
|
1416
|
+
trainedWorkoutPlans: many(workoutPlan, {
|
|
1417
|
+
relationName: "workoutPlanTrainer"
|
|
1418
|
+
}),
|
|
1419
|
+
workoutSummaries: many(workoutSummary),
|
|
1420
|
+
aerobicTrackings: many(aerobicTracking),
|
|
1421
|
+
reminderSettings: one(userReminderSetting),
|
|
1422
|
+
splitInformation: many(userSplitInformation),
|
|
1423
|
+
sentMessages: many(message, {
|
|
1424
|
+
relationName: "messageSender"
|
|
1425
|
+
}),
|
|
1426
|
+
receivedMessages: many(message, {
|
|
1427
|
+
relationName: "messageReceiver"
|
|
1428
|
+
})
|
|
1429
|
+
}));
|
|
1430
|
+
|
|
1431
|
+
// ../../src/infrastructure/db/schema/drizzle/workout/views/exercise-to-workoutsplit-expanded.view.ts
|
|
1432
|
+
var import_pg_core31 = require("drizzle-orm/pg-core");
|
|
1433
|
+
var import_drizzle_orm28 = require("drizzle-orm");
|
|
1434
|
+
var import_pg_core32 = require("drizzle-orm/pg-core");
|
|
1435
|
+
var exerciseToWorkoutSplitExpandedView = workoutSchema.view("v_exercise_to_workout_split_expanded", {
|
|
1436
|
+
id: (0, import_pg_core31.bigint)("id", {
|
|
1437
|
+
mode: "number"
|
|
1438
|
+
}),
|
|
1439
|
+
workoutSplitId: (0, import_pg_core31.bigint)("workout_split_id", {
|
|
1440
|
+
mode: "number"
|
|
1441
|
+
}),
|
|
1442
|
+
workoutId: (0, import_pg_core31.bigint)("workout_id", {
|
|
1443
|
+
mode: "number"
|
|
1444
|
+
}),
|
|
1445
|
+
exerciseId: (0, import_pg_core31.bigint)("exercise_id", {
|
|
1446
|
+
mode: "number"
|
|
1447
|
+
}),
|
|
1448
|
+
exercise: (0, import_pg_core31.text)("exercise"),
|
|
1449
|
+
workoutSplit: (0, import_pg_core31.text)("workout_split"),
|
|
1450
|
+
reps: (0, import_pg_core32.integer)("reps"),
|
|
1451
|
+
orderIndex: (0, import_pg_core31.bigint)("order_index", {
|
|
1452
|
+
mode: "number"
|
|
1453
|
+
}),
|
|
1454
|
+
setOrderIndex: (0, import_pg_core32.integer)("set_order_index"),
|
|
1455
|
+
createdAt: (0, import_pg_core31.timestamp)("created_at", {
|
|
1456
|
+
withTimezone: true
|
|
1457
|
+
}),
|
|
1458
|
+
isActive: (0, import_pg_core31.boolean)("is_active")
|
|
1459
|
+
}).with({
|
|
1460
|
+
securityInvoker: true
|
|
1461
|
+
}).as(import_drizzle_orm28.sql`
|
|
1462
|
+
SELECT
|
|
1463
|
+
ews.id,
|
|
1464
|
+
ews.workout_split_id,
|
|
1465
|
+
ws.workout_id,
|
|
1466
|
+
ews.exercise_id,
|
|
1467
|
+
ex.name AS exercise,
|
|
1468
|
+
ws.name AS workout_split,
|
|
1469
|
+
workout_set.reps AS reps,
|
|
1470
|
+
workout_set.order_index AS set_order_index,
|
|
1471
|
+
ews.order_index,
|
|
1472
|
+
ews.created_at,
|
|
1473
|
+
ews.is_active
|
|
1474
|
+
FROM
|
|
1475
|
+
workout.exercise_to_workout_split ews
|
|
1476
|
+
JOIN workout.workout_split ws ON ws.id = ews.workout_split_id
|
|
1477
|
+
JOIN workout.exercise ex ON ex.id = ews.exercise_id
|
|
1478
|
+
LEFT JOIN workout.workout_set workout_set ON workout_set.exercise_to_split_id = ews.id
|
|
1479
|
+
GROUP BY
|
|
1480
|
+
ews.id,
|
|
1481
|
+
ews.workout_split_id,
|
|
1482
|
+
ws.workout_id,
|
|
1483
|
+
ews.exercise_id,
|
|
1484
|
+
ex.name,
|
|
1485
|
+
ws.name,
|
|
1486
|
+
workout_set.reps,
|
|
1487
|
+
workout_set.order_index,
|
|
1488
|
+
ews.order_index,
|
|
1489
|
+
ews.created_at,
|
|
1490
|
+
ews.is_active
|
|
1491
|
+
`);
|
|
1492
|
+
|
|
1493
|
+
// ../../src/infrastructure/db/schema/drizzle/analytics/views/exercise-tracking-expanded.view.ts
|
|
1494
|
+
var import_drizzle_orm29 = require("drizzle-orm");
|
|
1495
|
+
var import_pg_core33 = require("drizzle-orm/pg-core");
|
|
1496
|
+
var import_pg_core34 = require("drizzle-orm/pg-core");
|
|
1497
|
+
var exerciseTrackingExpandedView = analyticsSchema.view("v_exercise_tracking_expanded", {
|
|
1498
|
+
id: (0, import_pg_core33.bigint)("id", {
|
|
1499
|
+
mode: "number"
|
|
1500
|
+
}),
|
|
1501
|
+
exerciseToSplitId: (0, import_pg_core33.bigint)("exercise_to_split_id", {
|
|
1502
|
+
mode: "number"
|
|
1503
|
+
}),
|
|
1504
|
+
weight: (0, import_pg_core33.real)("weight"),
|
|
1505
|
+
reps: (0, import_pg_core33.bigint)("reps", {
|
|
1506
|
+
mode: "number"
|
|
1507
|
+
}),
|
|
1508
|
+
setIndex: (0, import_pg_core34.integer)("set_index"),
|
|
1509
|
+
exerciseId: (0, import_pg_core33.bigint)("exercise_id", {
|
|
1510
|
+
mode: "number"
|
|
1511
|
+
}),
|
|
1512
|
+
workoutSplitId: (0, import_pg_core33.bigint)("workout_split_id", {
|
|
1513
|
+
mode: "number"
|
|
1514
|
+
}),
|
|
1515
|
+
splitName: (0, import_pg_core33.text)("split_name"),
|
|
1516
|
+
exercise: (0, import_pg_core33.text)("exercise"),
|
|
1517
|
+
notes: (0, import_pg_core33.text)("notes"),
|
|
1518
|
+
workoutSummaryId: (0, import_pg_core33.uuid)("workout_summary_id"),
|
|
1519
|
+
workoutStartUtc: (0, import_pg_core33.timestamp)("workout_start_utc", {
|
|
1520
|
+
withTimezone: true
|
|
1521
|
+
}),
|
|
1522
|
+
workoutEndUtc: (0, import_pg_core33.timestamp)("workout_end_utc", {
|
|
1523
|
+
withTimezone: true
|
|
1524
|
+
})
|
|
1525
|
+
}).with({
|
|
1526
|
+
securityInvoker: true
|
|
1527
|
+
}).as(import_drizzle_orm29.sql`
|
|
1528
|
+
SELECT
|
|
1529
|
+
et.id,
|
|
1530
|
+
et.exercise_to_split_id,
|
|
1531
|
+
tracking_set.weight AS weight,
|
|
1532
|
+
tracking_set.reps AS reps,
|
|
1533
|
+
tracking_set.set_index AS set_index,
|
|
1534
|
+
COALESCE(ews.exercise_id, et.exercise_id) AS exercise_id,
|
|
1535
|
+
wsumm.workout_split_id,
|
|
1536
|
+
ws.name AS split_name,
|
|
1537
|
+
ex.name AS exercise,
|
|
1538
|
+
et.notes,
|
|
1539
|
+
et.workout_summary_id,
|
|
1540
|
+
wsumm.workout_start_utc,
|
|
1541
|
+
wsumm.workout_end_utc
|
|
1542
|
+
FROM
|
|
1543
|
+
tracking.exercise_tracking et
|
|
1544
|
+
LEFT JOIN tracking.workout_summary wsumm ON wsumm.id = et.workout_summary_id
|
|
1545
|
+
LEFT JOIN workout.exercise_to_workout_split ews ON ews.id = et.exercise_to_split_id
|
|
1546
|
+
LEFT JOIN workout.workout_split ws ON ws.id = wsumm.workout_split_id
|
|
1547
|
+
LEFT JOIN workout.exercise ex ON ex.id = COALESCE(ews.exercise_id, et.exercise_id)
|
|
1548
|
+
LEFT JOIN tracking.tracking_set tracking_set ON tracking_set.exercise_tracking_id = et.id
|
|
1549
|
+
`);
|
|
1550
|
+
|
|
1551
|
+
// ../../src/infrastructure/db/schema/drizzle/analytics/views/prs.view.ts
|
|
1552
|
+
var import_drizzle_orm30 = require("drizzle-orm");
|
|
1553
|
+
var import_pg_core35 = require("drizzle-orm/pg-core");
|
|
1554
|
+
var prsView = analyticsSchema.view("v_prs", {
|
|
1555
|
+
id: (0, import_pg_core35.bigint)("id", {
|
|
1556
|
+
mode: "number"
|
|
1557
|
+
}),
|
|
1558
|
+
exerciseToSplitId: (0, import_pg_core35.bigint)("exercise_to_split_id", {
|
|
1559
|
+
mode: "number"
|
|
1560
|
+
}),
|
|
1561
|
+
exerciseId: (0, import_pg_core35.bigint)("exercise_id", {
|
|
1562
|
+
mode: "number"
|
|
1563
|
+
}),
|
|
1564
|
+
exercise: (0, import_pg_core35.text)("exercise"),
|
|
1565
|
+
weight: (0, import_pg_core35.real)("weight"),
|
|
1566
|
+
reps: (0, import_pg_core35.bigint)("reps", {
|
|
1567
|
+
mode: "number"
|
|
1568
|
+
}),
|
|
1569
|
+
workoutSummaryId: (0, import_pg_core35.uuid)("workout_summary_id"),
|
|
1570
|
+
workoutStartUtc: (0, import_pg_core35.timestamp)("workout_start_utc", {
|
|
1571
|
+
withTimezone: true
|
|
1572
|
+
}),
|
|
1573
|
+
workoutEndUtc: (0, import_pg_core35.timestamp)("workout_end_utc", {
|
|
1574
|
+
withTimezone: true
|
|
1575
|
+
})
|
|
1576
|
+
}).with({
|
|
1577
|
+
securityInvoker: true
|
|
1578
|
+
}).as(import_drizzle_orm30.sql`
|
|
1579
|
+
SELECT DISTINCT
|
|
1580
|
+
ON (et.exercise_id) et.id,
|
|
1581
|
+
et.exercise_to_split_id,
|
|
1582
|
+
et.exercise_id,
|
|
1583
|
+
et.exercise,
|
|
1584
|
+
et.weight,
|
|
1585
|
+
et.reps,
|
|
1586
|
+
et.workout_summary_id,
|
|
1587
|
+
et.workout_start_utc,
|
|
1588
|
+
et.workout_end_utc
|
|
1589
|
+
FROM
|
|
1590
|
+
analytics.v_exercise_tracking_expanded et
|
|
1591
|
+
ORDER BY
|
|
1592
|
+
et.exercise_id,
|
|
1593
|
+
et.weight DESC,
|
|
1594
|
+
et.reps DESC,
|
|
1595
|
+
et.workout_start_utc DESC,
|
|
1596
|
+
et.id DESC
|
|
1597
|
+
`);
|
|
1598
|
+
|
|
1599
|
+
// src/database/database.schemas.ts
|
|
1600
|
+
var userDbSchema = (0, import_drizzle_zod.createSelectSchema)(user);
|
|
1601
|
+
var userInsertDbSchema = (0, import_drizzle_zod.createInsertSchema)(user);
|
|
1602
|
+
var userUpdateDbSchema = (0, import_drizzle_zod.createUpdateSchema)(user);
|
|
1603
|
+
var oauthAccountDbSchema = (0, import_drizzle_zod.createSelectSchema)(oauthAccount);
|
|
1604
|
+
var exerciseDbSchema = (0, import_drizzle_zod.createSelectSchema)(exercise);
|
|
1605
|
+
var workoutPlanDbSchema = (0, import_drizzle_zod.createSelectSchema)(workoutPlan);
|
|
1606
|
+
var workoutSplitDbSchema = (0, import_drizzle_zod.createSelectSchema)(workoutSplit);
|
|
1607
|
+
var exerciseToWorkoutSplitDbSchema = (0, import_drizzle_zod.createSelectSchema)(exerciseToWorkoutSplit);
|
|
1608
|
+
var exerciseToWorkoutSplitExpandedViewDbSchema = (0, import_drizzle_zod.createSelectSchema)(exerciseToWorkoutSplitExpandedView);
|
|
1609
|
+
var workoutSetDbSchema = (0, import_drizzle_zod.createSelectSchema)(workoutSet);
|
|
1610
|
+
var workoutSummaryDbSchema = (0, import_drizzle_zod.createSelectSchema)(workoutSummary);
|
|
1611
|
+
var exerciseTrackingDbSchema = (0, import_drizzle_zod.createSelectSchema)(exerciseTracking);
|
|
1612
|
+
var trackingSetDbSchema = (0, import_drizzle_zod.createSelectSchema)(trackingSet);
|
|
1613
|
+
var aerobicTrackingDbSchema = (0, import_drizzle_zod.createSelectSchema)(aerobicTracking);
|
|
1614
|
+
var messageDbSchema = (0, import_drizzle_zod.createSelectSchema)(message);
|
|
1615
|
+
var userReminderSettingDbSchema = (0, import_drizzle_zod.createSelectSchema)(userReminderSetting);
|
|
1616
|
+
var userSplitInformationDbSchema = (0, import_drizzle_zod.createSelectSchema)(userSplitInformation);
|
|
1617
|
+
var exerciseTrackingExpandedViewDbSchema = (0, import_drizzle_zod.createSelectSchema)(exerciseTrackingExpandedView);
|
|
1618
|
+
var prsViewDbSchema = (0, import_drizzle_zod.createSelectSchema)(prsView);
|
|
1619
|
+
|
|
1620
|
+
// src/modules/aerobics/aerobics.schemas.ts
|
|
1621
|
+
var import_v42 = __toESM(require("zod/v4"), 1);
|
|
1622
|
+
var addAerobicInput = import_v42.default.object({
|
|
1623
|
+
durationMins: import_v42.default.number(),
|
|
1624
|
+
durationSec: aerobicTrackingDbSchema.shape.durationSec,
|
|
1625
|
+
type: aerobicTrackingDbSchema.shape.type
|
|
1626
|
+
});
|
|
1627
|
+
var addAerobicsRequest = import_v42.default.object({
|
|
1628
|
+
body: import_v42.default.object({
|
|
1629
|
+
tz: import_v42.default.string(),
|
|
1630
|
+
record: addAerobicInput
|
|
1631
|
+
})
|
|
1632
|
+
});
|
|
1633
|
+
var getAerobicsRequest = import_v42.default.object({
|
|
1634
|
+
query: import_v42.default.object({
|
|
1635
|
+
tz: import_v42.default.string().optional()
|
|
1636
|
+
})
|
|
1637
|
+
});
|
|
1638
|
+
var aerobicsDailyRecordSchema = import_v42.default.object({
|
|
1639
|
+
type: aerobicTrackingDbSchema.shape.type,
|
|
1640
|
+
durationSec: aerobicTrackingDbSchema.shape.durationSec,
|
|
1641
|
+
durationMins: aerobicTrackingDbSchema.shape.durationSec
|
|
1642
|
+
});
|
|
1643
|
+
var aerobicsWeeklyRecordSchema = aerobicsDailyRecordSchema.extend({
|
|
1644
|
+
workoutTimeUtc: serializedDateSchema
|
|
1645
|
+
});
|
|
1646
|
+
var weeklyDataSchema = import_v42.default.object({
|
|
1647
|
+
records: import_v42.default.array(aerobicsWeeklyRecordSchema),
|
|
1648
|
+
totalDurationSec: import_v42.default.number(),
|
|
1649
|
+
totalDurationMins: import_v42.default.number()
|
|
1650
|
+
});
|
|
1651
|
+
var userAerobicsResponseSchema = import_v42.default.object({
|
|
1652
|
+
daily: import_v42.default.record(import_v42.default.string(), import_v42.default.array(aerobicsDailyRecordSchema)),
|
|
1653
|
+
weekly: import_v42.default.record(import_v42.default.string(), weeklyDataSchema)
|
|
1654
|
+
});
|
|
1655
|
+
|
|
1656
|
+
// src/modules/analytics/analytics.schemas.ts
|
|
1657
|
+
var import_v43 = require("zod/v4");
|
|
1658
|
+
var workoutRmRecordSchema = import_v43.z.object({
|
|
1659
|
+
exercise: exerciseDbSchema.shape.name,
|
|
1660
|
+
prWeight: trackingSetDbSchema.shape.weight.nullable(),
|
|
1661
|
+
prReps: trackingSetDbSchema.shape.reps.nullable(),
|
|
1662
|
+
max1Rm: import_v43.z.number()
|
|
1663
|
+
});
|
|
1664
|
+
var adherenceExerciseStatsSchema = import_v43.z.object({
|
|
1665
|
+
planned: import_v43.z.number(),
|
|
1666
|
+
actual: import_v43.z.number(),
|
|
1667
|
+
adherencePct: import_v43.z.number().nullable()
|
|
1668
|
+
});
|
|
1669
|
+
var getAnalyticsResponseSchema = import_v43.z.object({
|
|
1670
|
+
oneRepMaxes: import_v43.z.record(import_v43.z.string(), workoutRmRecordSchema),
|
|
1671
|
+
goals: import_v43.z.record(import_v43.z.string(), import_v43.z.record(import_v43.z.string(), adherenceExerciseStatsSchema))
|
|
1672
|
+
});
|
|
1673
|
+
|
|
1674
|
+
// src/modules/auth/password/password.dtos.ts
|
|
1675
|
+
var import_v44 = require("zod/v4");
|
|
1676
|
+
var forgotPasswordPayloadSchema = import_v44.z.object({
|
|
1677
|
+
sub: userDbSchema.shape.id,
|
|
1678
|
+
jti: import_v44.z.string(),
|
|
1679
|
+
exp: import_v44.z.number(),
|
|
1680
|
+
iss: import_v44.z.string(),
|
|
1681
|
+
typ: import_v44.z.string()
|
|
1682
|
+
});
|
|
1683
|
+
|
|
1684
|
+
// src/modules/auth/password/password.schemas.ts
|
|
1685
|
+
var import_v45 = require("zod/v4");
|
|
1686
|
+
var sendChangePassEmailRequest = import_v45.z.object({
|
|
1687
|
+
body: import_v45.z.object({
|
|
1688
|
+
identifier: import_v45.z.string()
|
|
1689
|
+
})
|
|
1690
|
+
});
|
|
1691
|
+
var resetPasswordRequest = import_v45.z.object({
|
|
1692
|
+
body: import_v45.z.object({
|
|
1693
|
+
newPassword: import_v45.z.string().min(8, "Password must be at least 8 characters long")
|
|
1694
|
+
}),
|
|
1695
|
+
query: import_v45.z.object({
|
|
1696
|
+
token: import_v45.z.string().optional()
|
|
1697
|
+
})
|
|
1698
|
+
});
|
|
1699
|
+
var resetPasswordResponseSchema = import_v45.z.object({
|
|
1700
|
+
ok: import_v45.z.boolean()
|
|
1701
|
+
});
|
|
1702
|
+
|
|
1703
|
+
// src/modules/auth/session/session.dtos.ts
|
|
1704
|
+
var import_v47 = require("zod/v4");
|
|
1705
|
+
|
|
1706
|
+
// src/modules/user/update/update.schemas.ts
|
|
1707
|
+
var import_v46 = require("zod/v4");
|
|
1708
|
+
var updateUserRequest = import_v46.z.object({
|
|
1709
|
+
body: import_v46.z.object({
|
|
1710
|
+
username: userDbSchema.shape.username.trim().min(3, "Username must be at least 3 characters").max(15, "Username must be at most 15 characters").regex(/^[a-zA-Z0-9_]+$/, "Username may contain letters, numbers, and underscore only"),
|
|
1711
|
+
fullName: userDbSchema.shape.name.trim().min(1, "Full name is required").max(20, "Full name is too long").regex(/^[a-zA-Z\s]+$/, "Full name may contain letters and spaces only"),
|
|
1712
|
+
email: userDbSchema.shape.email.trim().toLowerCase().email("Invalid email format")
|
|
1713
|
+
}).partial()
|
|
1714
|
+
});
|
|
1715
|
+
var deleteProfilePicRequest = import_v46.z.object({
|
|
1716
|
+
body: import_v46.z.object({
|
|
1717
|
+
path: import_v46.z.string()
|
|
1718
|
+
})
|
|
1719
|
+
});
|
|
1720
|
+
var userDataSchema = import_v46.z.object({
|
|
1721
|
+
id: userDbSchema.shape.id,
|
|
1722
|
+
username: userDbSchema.shape.username,
|
|
1723
|
+
email: userDbSchema.shape.email,
|
|
1724
|
+
name: userDbSchema.shape.name,
|
|
1725
|
+
gender: userDbSchema.shape.gender,
|
|
1726
|
+
createdAt: serializedDateSchema,
|
|
1727
|
+
updatedAt: serializedDateSchema,
|
|
1728
|
+
profileImageUrl: userDbSchema.shape.profilePicPath,
|
|
1729
|
+
pushToken: userDbSchema.shape.pushToken,
|
|
1730
|
+
role: userDbSchema.shape.role,
|
|
1731
|
+
isFirstLogin: import_v46.z.boolean(),
|
|
1732
|
+
tokenVersion: userDbSchema.shape.tokenVersion,
|
|
1733
|
+
isVerified: userDbSchema.shape.isVerified,
|
|
1734
|
+
authProvider: userDbSchema.shape.authProvider,
|
|
1735
|
+
lastLogin: serializedDateSchema.nullable()
|
|
1736
|
+
});
|
|
1737
|
+
var userDataResponseSchema = import_v46.z.object({
|
|
1738
|
+
userData: userDataSchema
|
|
1739
|
+
});
|
|
1740
|
+
var getAuthenticatedUserByIdResponseSchema = userDataSchema;
|
|
1741
|
+
var updateAuthenticatedUserResponseSchema = import_v46.z.object({
|
|
1742
|
+
message: import_v46.z.string(),
|
|
1743
|
+
emailChanged: import_v46.z.boolean(),
|
|
1744
|
+
user: userDataSchema
|
|
1745
|
+
});
|
|
1746
|
+
var setProfilePicAndUpdateDBResponseSchema = import_v46.z.object({
|
|
1747
|
+
path: import_v46.z.string(),
|
|
1748
|
+
url: import_v46.z.string(),
|
|
1749
|
+
message: import_v46.z.string()
|
|
1750
|
+
});
|
|
1751
|
+
|
|
1752
|
+
// src/modules/auth/session/session.dtos.ts
|
|
1753
|
+
var accessTokenPayloadSchema = import_v47.z.object({
|
|
1754
|
+
id: userDbSchema.shape.id,
|
|
1755
|
+
role: userDbSchema.shape.role,
|
|
1756
|
+
tokenVer: userDbSchema.shape.tokenVersion,
|
|
1757
|
+
cnf: import_v47.z.object({
|
|
1758
|
+
jkt: import_v47.z.string()
|
|
1759
|
+
}).optional(),
|
|
1760
|
+
iat: import_v47.z.number().optional(),
|
|
1761
|
+
exp: import_v47.z.number().optional()
|
|
1762
|
+
});
|
|
1763
|
+
var userAfterBumpSchema = import_v47.z.object({
|
|
1764
|
+
tokenVersion: userDbSchema.shape.tokenVersion,
|
|
1765
|
+
userData: userDataSchema
|
|
1766
|
+
});
|
|
1767
|
+
var tokenVersionResultSchema = import_v47.z.object({
|
|
1768
|
+
tokenVersion: userDbSchema.shape.tokenVersion
|
|
1769
|
+
});
|
|
1770
|
+
|
|
1771
|
+
// src/modules/auth/session/session.schemas.ts
|
|
1772
|
+
var import_v48 = require("zod/v4");
|
|
1773
|
+
var loginRequest = import_v48.z.object({
|
|
1774
|
+
body: import_v48.z.object({
|
|
1775
|
+
identifier: import_v48.z.string().min(3).refine((val) => {
|
|
1776
|
+
const isEmail = import_v48.z.string().email().safeParse(val).success;
|
|
1777
|
+
const isUsername = /^[a-zA-Z0-9_]{3,20}$/.test(val);
|
|
1778
|
+
return isEmail || isUsername;
|
|
1779
|
+
}, {
|
|
1780
|
+
message: "Must be a valid email or username"
|
|
1781
|
+
}),
|
|
1782
|
+
password: import_v48.z.string().min(1, "Username and password are required")
|
|
1783
|
+
})
|
|
1784
|
+
});
|
|
1785
|
+
var loginResponseSchema = import_v48.z.object({
|
|
1786
|
+
message: import_v48.z.string(),
|
|
1787
|
+
user: userDbSchema.shape.id,
|
|
1788
|
+
accessToken: import_v48.z.string(),
|
|
1789
|
+
refreshToken: import_v48.z.string()
|
|
1790
|
+
});
|
|
1791
|
+
var logoutResponseSchema = import_v48.z.object({
|
|
1792
|
+
message: import_v48.z.string()
|
|
1793
|
+
});
|
|
1794
|
+
var refreshTokenResponseSchema = import_v48.z.object({
|
|
1795
|
+
message: import_v48.z.string(),
|
|
1796
|
+
accessToken: import_v48.z.string(),
|
|
1797
|
+
refreshToken: import_v48.z.string(),
|
|
1798
|
+
userId: userDbSchema.shape.id
|
|
1799
|
+
});
|
|
1800
|
+
|
|
1801
|
+
// src/modules/auth/verification/verification.dtos.ts
|
|
1802
|
+
var import_v49 = require("zod/v4");
|
|
1803
|
+
var emailVerifyPayloadSchema = import_v49.z.object({
|
|
1804
|
+
sub: userDbSchema.shape.id,
|
|
1805
|
+
jti: import_v49.z.string(),
|
|
1806
|
+
exp: import_v49.z.number(),
|
|
1807
|
+
iss: import_v49.z.string(),
|
|
1808
|
+
typ: import_v49.z.string()
|
|
1809
|
+
});
|
|
1810
|
+
|
|
1811
|
+
// src/modules/auth/verification/verification.schemas.ts
|
|
1812
|
+
var import_v410 = __toESM(require("zod/v4"), 1);
|
|
1813
|
+
var verifyAccountRequest = import_v410.default.object({
|
|
1814
|
+
query: import_v410.default.object({
|
|
1815
|
+
token: import_v410.default.string().optional()
|
|
1816
|
+
})
|
|
1817
|
+
});
|
|
1818
|
+
var sendVerificationMailRequest = import_v410.default.object({
|
|
1819
|
+
body: import_v410.default.object({
|
|
1820
|
+
email: userDbSchema.shape.email.trim().email("Invalid email")
|
|
1821
|
+
})
|
|
1822
|
+
});
|
|
1823
|
+
var changeEmailAndVerifyRequest = import_v410.default.object({
|
|
1824
|
+
body: import_v410.default.object({
|
|
1825
|
+
username: userDbSchema.shape.username,
|
|
1826
|
+
password: import_v410.default.string(),
|
|
1827
|
+
newEmail: userDbSchema.shape.email.trim().email("Invalid email")
|
|
1828
|
+
})
|
|
1829
|
+
});
|
|
1830
|
+
var checkUserVerifyRequest = import_v410.default.object({
|
|
1831
|
+
query: import_v410.default.object({
|
|
1832
|
+
username: userDbSchema.shape.username
|
|
1833
|
+
})
|
|
1834
|
+
});
|
|
1835
|
+
|
|
1836
|
+
// src/modules/auth/auth.dtos.ts
|
|
1837
|
+
var import_v411 = require("zod/v4");
|
|
1838
|
+
var userByIndetifierSchema = import_v411.z.object({
|
|
1839
|
+
id: userDbSchema.shape.id,
|
|
1840
|
+
name: userDbSchema.shape.name,
|
|
1841
|
+
username: userDbSchema.shape.username,
|
|
1842
|
+
email: userDbSchema.shape.email.optional(),
|
|
1843
|
+
password: userDbSchema.shape.passwordHash,
|
|
1844
|
+
role: userDbSchema.shape.role,
|
|
1845
|
+
isVerified: userDbSchema.shape.isVerified,
|
|
1846
|
+
lastLogin: serializedDateSchema.nullable().optional()
|
|
1847
|
+
});
|
|
1848
|
+
|
|
1849
|
+
// src/modules/bootstrap/bootstrap.schemas.ts
|
|
1850
|
+
var import_v415 = require("zod/v4");
|
|
1851
|
+
|
|
1852
|
+
// src/modules/messages/messages.schemas.ts
|
|
1853
|
+
var import_v412 = require("zod/v4");
|
|
1854
|
+
var getAllMessagesRequest = import_v412.z.object({
|
|
1855
|
+
query: import_v412.z.object({
|
|
1856
|
+
tz: import_v412.z.string()
|
|
1857
|
+
})
|
|
1858
|
+
});
|
|
1859
|
+
var allUserMessageSchema = import_v412.z.object({
|
|
1860
|
+
id: messageDbSchema.shape.id,
|
|
1861
|
+
subject: messageDbSchema.shape.subject,
|
|
1862
|
+
msg: messageDbSchema.shape.msg,
|
|
1863
|
+
sentAt: serializedDateSchema,
|
|
1864
|
+
isRead: messageDbSchema.shape.isRead,
|
|
1865
|
+
senderFullName: userDbSchema.shape.name,
|
|
1866
|
+
senderProfileImageUrl: userDbSchema.shape.profilePicPath
|
|
1867
|
+
});
|
|
1868
|
+
var getAllUserMessagesResponseSchema = import_v412.z.object({
|
|
1869
|
+
messages: import_v412.z.array(allUserMessageSchema)
|
|
1870
|
+
});
|
|
1871
|
+
var markMessageAsReadRequest = import_v412.z.object({
|
|
1872
|
+
params: import_v412.z.object({
|
|
1873
|
+
id: messageDbSchema.shape.id
|
|
1874
|
+
})
|
|
1875
|
+
});
|
|
1876
|
+
var messageAsReadSchema = import_v412.z.object({
|
|
1877
|
+
id: messageDbSchema.shape.id,
|
|
1878
|
+
isRead: messageDbSchema.shape.isRead
|
|
1879
|
+
});
|
|
1880
|
+
var markMessageAsReadResponseSchema = messageAsReadSchema;
|
|
1881
|
+
var deleteMessageRequest = import_v412.z.object({
|
|
1882
|
+
params: import_v412.z.object({
|
|
1883
|
+
id: messageDbSchema.shape.id
|
|
1884
|
+
})
|
|
1885
|
+
});
|
|
1886
|
+
var deletedMessageSchema = import_v412.z.object({
|
|
1887
|
+
id: messageDbSchema.shape.id
|
|
1888
|
+
});
|
|
1889
|
+
var messageAfterSendResponseSchema = import_v412.z.object({
|
|
1890
|
+
id: messageDbSchema.shape.id,
|
|
1891
|
+
senderId: messageDbSchema.shape.senderId,
|
|
1892
|
+
receiverId: messageDbSchema.shape.receiverId,
|
|
1893
|
+
subject: messageDbSchema.shape.subject,
|
|
1894
|
+
msg: messageDbSchema.shape.msg,
|
|
1895
|
+
sentAt: serializedDateSchema,
|
|
1896
|
+
isRead: messageDbSchema.shape.isRead,
|
|
1897
|
+
senderUsername: userDbSchema.shape.username,
|
|
1898
|
+
senderFullName: userDbSchema.shape.name,
|
|
1899
|
+
senderProfileImageUrl: userDbSchema.shape.profilePicPath,
|
|
1900
|
+
senderGender: userDbSchema.shape.gender
|
|
1901
|
+
});
|
|
1902
|
+
var deleteMessageResponseSchema = deletedMessageSchema;
|
|
1903
|
+
|
|
1904
|
+
// src/modules/workout/plan/plan.schemas.ts
|
|
1905
|
+
var import_v413 = require("zod/v4");
|
|
1906
|
+
var workoutExerciseSchema = import_v413.z.object({
|
|
1907
|
+
id: exerciseDbSchema.shape.id,
|
|
1908
|
+
sets: import_v413.z.array(workoutSetDbSchema.shape.reps),
|
|
1909
|
+
orderIndex: exerciseToWorkoutSplitDbSchema.shape.orderIndex
|
|
1910
|
+
});
|
|
1911
|
+
var exerciseInPlanSchema = import_v413.z.object({
|
|
1912
|
+
id: exerciseToWorkoutSplitDbSchema.shape.id,
|
|
1913
|
+
sets: import_v413.z.array(workoutSetDbSchema.shape.reps),
|
|
1914
|
+
isActive: exerciseToWorkoutSplitDbSchema.shape.isActive,
|
|
1915
|
+
targetMuscle: exerciseDbSchema.shape.targetMuscle,
|
|
1916
|
+
specificTargetMuscle: exerciseDbSchema.shape.specificTargetMuscle,
|
|
1917
|
+
exercise: exerciseDbSchema.shape.name,
|
|
1918
|
+
workoutSplit: workoutSplitDbSchema.shape.name
|
|
1919
|
+
});
|
|
1920
|
+
var workoutSplitSchema = import_v413.z.object({
|
|
1921
|
+
id: workoutSplitDbSchema.shape.id,
|
|
1922
|
+
workoutId: workoutSplitDbSchema.shape.workoutId,
|
|
1923
|
+
name: workoutSplitDbSchema.shape.name,
|
|
1924
|
+
createdAt: serializedDateSchema,
|
|
1925
|
+
muscleGroup: import_v413.z.string().nullable(),
|
|
1926
|
+
isActive: workoutSplitDbSchema.shape.isActive,
|
|
1927
|
+
exerciseToWorkoutSplit: import_v413.z.array(exerciseInPlanSchema)
|
|
1928
|
+
});
|
|
1929
|
+
var wholeUserWorkoutPlanSchema = import_v413.z.object({
|
|
1930
|
+
id: workoutPlanDbSchema.shape.id,
|
|
1931
|
+
numberOfSplits: import_v413.z.number(),
|
|
1932
|
+
createdAt: serializedDateSchema,
|
|
1933
|
+
userId: userDbSchema.shape.id,
|
|
1934
|
+
isActive: workoutPlanDbSchema.shape.isActive,
|
|
1935
|
+
updatedAt: serializedDateSchema,
|
|
1936
|
+
workoutSplits: import_v413.z.array(workoutSplitSchema).nullable()
|
|
1937
|
+
});
|
|
1938
|
+
var workoutSplitsMapItemSchema = import_v413.z.object({
|
|
1939
|
+
id: exerciseDbSchema.shape.id,
|
|
1940
|
+
name: exerciseDbSchema.shape.name,
|
|
1941
|
+
sets: import_v413.z.array(workoutSetDbSchema.shape.reps),
|
|
1942
|
+
orderIndex: exerciseToWorkoutSplitDbSchema.shape.orderIndex,
|
|
1943
|
+
targetMuscle: exerciseDbSchema.shape.targetMuscle,
|
|
1944
|
+
specificTargetMuscle: exerciseDbSchema.shape.specificTargetMuscle
|
|
1945
|
+
});
|
|
1946
|
+
var workoutSplitsMapSchema = import_v413.z.record(import_v413.z.string(), import_v413.z.array(workoutSplitsMapItemSchema));
|
|
1947
|
+
var addWorkoutSplitPayloadSchema = import_v413.z.record(import_v413.z.string(), import_v413.z.array(workoutExerciseSchema).min(1, "Each split must include at least one exercise"));
|
|
1948
|
+
var addWorkoutRequest = import_v413.z.object({
|
|
1949
|
+
body: import_v413.z.object({
|
|
1950
|
+
workoutData: addWorkoutSplitPayloadSchema,
|
|
1951
|
+
workoutName: import_v413.z.string().optional(),
|
|
1952
|
+
tz: import_v413.z.string()
|
|
1953
|
+
})
|
|
1954
|
+
});
|
|
1955
|
+
var addWorkoutResponseSchema = import_v413.z.object({
|
|
1956
|
+
message: import_v413.z.string(),
|
|
1957
|
+
workoutPlan: wholeUserWorkoutPlanSchema,
|
|
1958
|
+
workoutPlanForEditWorkout: workoutSplitsMapSchema
|
|
1959
|
+
});
|
|
1960
|
+
var getWholeWorkoutPlanRequest = import_v413.z.object({
|
|
1961
|
+
query: import_v413.z.object({
|
|
1962
|
+
tz: import_v413.z.string().optional()
|
|
1963
|
+
})
|
|
1964
|
+
});
|
|
1965
|
+
var getWholeUserWorkoutPlanResponseSchema = import_v413.z.object({
|
|
1966
|
+
workoutPlan: wholeUserWorkoutPlanSchema.nullable(),
|
|
1967
|
+
workoutPlanForEditWorkout: workoutSplitsMapSchema.nullable()
|
|
1968
|
+
});
|
|
1969
|
+
|
|
1970
|
+
// src/modules/workout/tracking/tracking.schemas.ts
|
|
1971
|
+
var import_v414 = require("zod/v4");
|
|
1972
|
+
var finishedExerciseEntry = import_v414.z.object({
|
|
1973
|
+
exerciseToSplitId: exerciseToWorkoutSplitDbSchema.shape.id,
|
|
1974
|
+
weight: import_v414.z.array(trackingSetDbSchema.shape.weight),
|
|
1975
|
+
reps: import_v414.z.array(trackingSetDbSchema.shape.reps),
|
|
1976
|
+
notes: exerciseTrackingDbSchema.shape.notes.optional()
|
|
1977
|
+
});
|
|
1978
|
+
var exerciseMetadataSchema = import_v414.z.object({
|
|
1979
|
+
targetMuscle: exerciseDbSchema.shape.targetMuscle,
|
|
1980
|
+
specificTargetMuscle: exerciseDbSchema.shape.specificTargetMuscle
|
|
1981
|
+
});
|
|
1982
|
+
var exerciseTrackingPrMaxSchema = import_v414.z.object({
|
|
1983
|
+
exercise: exerciseDbSchema.shape.name,
|
|
1984
|
+
weight: trackingSetDbSchema.shape.weight,
|
|
1985
|
+
reps: trackingSetDbSchema.shape.reps,
|
|
1986
|
+
workoutTimeUtc: serializedDateSchema
|
|
1987
|
+
});
|
|
1988
|
+
var exerciseTrackingAnalysisSchema = import_v414.z.object({
|
|
1989
|
+
uniqueDays: import_v414.z.number(),
|
|
1990
|
+
mostFrequentSplit: import_v414.z.string().nullable(),
|
|
1991
|
+
mostFrequentSplitDays: import_v414.z.number().nullable(),
|
|
1992
|
+
lastWorkoutDate: import_v414.z.string().nullable(),
|
|
1993
|
+
splitDaysByName: import_v414.z.record(import_v414.z.string(), import_v414.z.number()),
|
|
1994
|
+
prs: import_v414.z.object({
|
|
1995
|
+
prMax: exerciseTrackingPrMaxSchema.nullable()
|
|
1996
|
+
})
|
|
1997
|
+
});
|
|
1998
|
+
var trackingMapItemSchema = import_v414.z.object({
|
|
1999
|
+
id: exerciseTrackingDbSchema.shape.id,
|
|
2000
|
+
exerciseToSplitId: exerciseToWorkoutSplitDbSchema.shape.id,
|
|
2001
|
+
weight: import_v414.z.array(trackingSetDbSchema.shape.weight),
|
|
2002
|
+
reps: import_v414.z.array(trackingSetDbSchema.shape.reps),
|
|
2003
|
+
notes: exerciseTrackingDbSchema.shape.notes,
|
|
2004
|
+
exerciseId: exerciseDbSchema.shape.id,
|
|
2005
|
+
workoutSplitId: workoutSplitDbSchema.shape.id,
|
|
2006
|
+
splitName: workoutSplitDbSchema.shape.name,
|
|
2007
|
+
exercise: exerciseDbSchema.shape.name,
|
|
2008
|
+
workoutDate: serializedDateSchema,
|
|
2009
|
+
orderIndex: exerciseToWorkoutSplitDbSchema.shape.orderIndex,
|
|
2010
|
+
exerciseToWorkoutSplit: import_v414.z.object({
|
|
2011
|
+
sets: import_v414.z.array(workoutSetDbSchema.shape.reps),
|
|
2012
|
+
exercises: exerciseMetadataSchema
|
|
2013
|
+
})
|
|
2014
|
+
});
|
|
2015
|
+
var trackingByDateItemSchema = trackingMapItemSchema.omit({
|
|
2016
|
+
workoutDate: true
|
|
2017
|
+
});
|
|
2018
|
+
var trackingBySplitNameItemSchema = trackingMapItemSchema.omit({
|
|
2019
|
+
splitName: true
|
|
2020
|
+
});
|
|
2021
|
+
var exerciseTrackingAndStatsSchema = import_v414.z.object({
|
|
2022
|
+
exerciseTrackingAnalysis: exerciseTrackingAnalysisSchema,
|
|
2023
|
+
exerciseTrackingMaps: import_v414.z.object({
|
|
2024
|
+
byDate: import_v414.z.record(import_v414.z.string(), import_v414.z.array(trackingByDateItemSchema)),
|
|
2025
|
+
byExerciseToSplitId: import_v414.z.record(import_v414.z.string(), import_v414.z.array(trackingMapItemSchema)),
|
|
2026
|
+
bySplitName: import_v414.z.record(import_v414.z.string(), import_v414.z.array(trackingBySplitNameItemSchema))
|
|
2027
|
+
})
|
|
2028
|
+
});
|
|
2029
|
+
var finishWorkoutRequest = import_v414.z.object({
|
|
2030
|
+
body: import_v414.z.object({
|
|
2031
|
+
workout: import_v414.z.array(finishedExerciseEntry),
|
|
2032
|
+
tz: import_v414.z.string().optional(),
|
|
2033
|
+
workoutStartUtc: import_v414.z.string().datetime("workoutStartUtc must be a valid ISO datetime"),
|
|
2034
|
+
workoutEndUtc: import_v414.z.string().datetime("workoutEndUtc must be a valid ISO datetime").optional().nullable()
|
|
2035
|
+
})
|
|
2036
|
+
});
|
|
2037
|
+
var finishUserWorkoutResponseSchema = exerciseTrackingAndStatsSchema;
|
|
2038
|
+
var getExerciseTrackingRequest = import_v414.z.object({
|
|
2039
|
+
query: import_v414.z.object({
|
|
2040
|
+
tz: import_v414.z.string().optional()
|
|
2041
|
+
})
|
|
2042
|
+
});
|
|
2043
|
+
var getExerciseTrackingResponseSchema = exerciseTrackingAndStatsSchema;
|
|
2044
|
+
|
|
2045
|
+
// src/modules/bootstrap/bootstrap.schemas.ts
|
|
2046
|
+
var bootstrapRequest = import_v415.z.object({
|
|
2047
|
+
query: import_v415.z.object({
|
|
2048
|
+
tz: import_v415.z.string().optional()
|
|
2049
|
+
})
|
|
2050
|
+
});
|
|
2051
|
+
var bootstrapResponseSchema = import_v415.z.object({
|
|
2052
|
+
user: userDataSchema,
|
|
2053
|
+
workout: getWholeUserWorkoutPlanResponseSchema,
|
|
2054
|
+
tracking: exerciseTrackingAndStatsSchema,
|
|
2055
|
+
messages: getAllUserMessagesResponseSchema,
|
|
2056
|
+
aerobics: userAerobicsResponseSchema
|
|
2057
|
+
});
|
|
2058
|
+
|
|
2059
|
+
// src/modules/exercises/exercises.schemas.ts
|
|
2060
|
+
var import_v416 = require("zod/v4");
|
|
2061
|
+
var getAllExercisesExerciseSchema = import_v416.z.object({
|
|
2062
|
+
id: exerciseDbSchema.shape.id,
|
|
2063
|
+
name: exerciseDbSchema.shape.name,
|
|
2064
|
+
specificTargetMuscle: exerciseDbSchema.shape.specificTargetMuscle
|
|
2065
|
+
});
|
|
2066
|
+
var getAllExercisesResponseSchema = import_v416.z.record(import_v416.z.string(), import_v416.z.array(getAllExercisesExerciseSchema));
|
|
2067
|
+
var queryGetExerciseMapByMuscleRowSchema = import_v416.z.object({
|
|
2068
|
+
result: import_v416.z.object({
|
|
2069
|
+
map: getAllExercisesResponseSchema.nullable()
|
|
2070
|
+
}).nullable()
|
|
2071
|
+
});
|
|
2072
|
+
|
|
2073
|
+
// src/modules/oauth/apple/apple.dtos.ts
|
|
2074
|
+
var import_v417 = require("zod/v4");
|
|
2075
|
+
var appleTokenVerificationResultSchema = import_v417.z.object({
|
|
2076
|
+
appleSub: import_v417.z.string(),
|
|
2077
|
+
email: userDbSchema.shape.email.nullable(),
|
|
2078
|
+
emailVerified: import_v417.z.boolean(),
|
|
2079
|
+
fullName: userDbSchema.shape.name
|
|
2080
|
+
});
|
|
2081
|
+
|
|
2082
|
+
// src/modules/oauth/apple/apple.schemas.ts
|
|
2083
|
+
var import_v418 = require("zod/v4");
|
|
2084
|
+
var appleNameInput = import_v418.z.object({
|
|
2085
|
+
givenName: import_v418.z.string().nullable(),
|
|
2086
|
+
familyName: import_v418.z.string().nullable()
|
|
2087
|
+
});
|
|
2088
|
+
var appleOAuthRequest = import_v418.z.object({
|
|
2089
|
+
body: import_v418.z.object({
|
|
2090
|
+
idToken: import_v418.z.string({
|
|
2091
|
+
error: "Missing or invalid Apple identityToken"
|
|
2092
|
+
}),
|
|
2093
|
+
rawNonce: import_v418.z.string(),
|
|
2094
|
+
name: appleNameInput.optional(),
|
|
2095
|
+
email: userDbSchema.shape.email.email().nullable()
|
|
2096
|
+
})
|
|
2097
|
+
});
|
|
2098
|
+
|
|
2099
|
+
// src/modules/oauth/google/google.dtos.ts
|
|
2100
|
+
var import_v419 = require("zod/v4");
|
|
2101
|
+
var googleTokenVerificationResultSchema = import_v419.z.object({
|
|
2102
|
+
googleSub: import_v419.z.string(),
|
|
2103
|
+
email: userDbSchema.shape.email.nullable(),
|
|
2104
|
+
emailVerified: import_v419.z.boolean(),
|
|
2105
|
+
fullName: userDbSchema.shape.name
|
|
2106
|
+
});
|
|
2107
|
+
|
|
2108
|
+
// src/modules/oauth/google/google.schemas.ts
|
|
2109
|
+
var import_v420 = require("zod/v4");
|
|
2110
|
+
var googleOAuthRequest = import_v420.z.object({
|
|
2111
|
+
body: import_v420.z.object({
|
|
2112
|
+
idToken: import_v420.z.string().optional()
|
|
2113
|
+
})
|
|
2114
|
+
});
|
|
2115
|
+
|
|
2116
|
+
// src/modules/oauth/oauth.schemas.ts
|
|
2117
|
+
var import_v421 = require("zod/v4");
|
|
2118
|
+
var oAuthLoginResponseSchema = import_v421.z.object({
|
|
2119
|
+
message: import_v421.z.string(),
|
|
2120
|
+
user: userDbSchema.shape.id,
|
|
2121
|
+
accessToken: import_v421.z.string(),
|
|
2122
|
+
refreshToken: import_v421.z.string(),
|
|
2123
|
+
missingFields: import_v421.z.array(import_v421.z.string()).nullable()
|
|
2124
|
+
});
|
|
2125
|
+
var proceedLoginResponseSchema = loginResponseSchema;
|
|
2126
|
+
|
|
2127
|
+
// src/modules/user/create/create.schemas.ts
|
|
2128
|
+
var import_v422 = require("zod/v4");
|
|
2129
|
+
var usernameSchema = userDbSchema.shape.username.trim().min(3, "Username must be at least 3 characters").max(15, "Username must be at most 15 characters").regex(/^[a-zA-Z0-9_]+$/, "Username may contain letters, numbers, and underscore only");
|
|
2130
|
+
var fullNameSchema = userDbSchema.shape.name.trim().max(20, "Full name is too long").regex(/^[a-zA-Z\s]+$/, "Full name may contain letters and spaces only");
|
|
2131
|
+
var createUserRequest = import_v422.z.object({
|
|
2132
|
+
body: import_v422.z.object({
|
|
2133
|
+
username: usernameSchema,
|
|
2134
|
+
fullName: import_v422.z.preprocess(
|
|
2135
|
+
// Map "", null, undefined -> "User"
|
|
2136
|
+
(val) => {
|
|
2137
|
+
if (val == null) return "User";
|
|
2138
|
+
if (typeof val === "string" && val.trim() === "") return "User";
|
|
2139
|
+
return val;
|
|
2140
|
+
},
|
|
2141
|
+
fullNameSchema
|
|
2142
|
+
),
|
|
2143
|
+
email: userDbSchema.shape.email.trim().toLowerCase().email("Invalid email format"),
|
|
2144
|
+
password: import_v422.z.string().min(8, "Password must be at least 8 characters long"),
|
|
2145
|
+
gender: import_v422.z.preprocess((val) => val === "" || val == null ? "Unknown" : val, import_v422.z.enum([
|
|
2146
|
+
"Male",
|
|
2147
|
+
"Female",
|
|
2148
|
+
"Other",
|
|
2149
|
+
"Unknown"
|
|
2150
|
+
]))
|
|
2151
|
+
})
|
|
2152
|
+
});
|
|
2153
|
+
var createUserUserSchema = import_v422.z.object({
|
|
2154
|
+
id: userDbSchema.shape.id,
|
|
2155
|
+
username: userDbSchema.shape.username,
|
|
2156
|
+
name: userDbSchema.shape.name,
|
|
2157
|
+
email: userDbSchema.shape.email,
|
|
2158
|
+
gender: userDbSchema.shape.gender,
|
|
2159
|
+
role: userDbSchema.shape.role,
|
|
2160
|
+
createdAt: serializedDateSchema
|
|
2161
|
+
});
|
|
2162
|
+
var createUserResponseSchema = import_v422.z.object({
|
|
2163
|
+
message: import_v422.z.string(),
|
|
2164
|
+
user: createUserUserSchema
|
|
2165
|
+
});
|
|
2166
|
+
|
|
2167
|
+
// src/modules/user/push-tokens/push-tokens.schemas.ts
|
|
2168
|
+
var import_v423 = require("zod/v4");
|
|
2169
|
+
var saveUserPushTokenRequest = import_v423.z.object({
|
|
2170
|
+
body: import_v423.z.object({
|
|
2171
|
+
token: userDbSchema.shape.pushToken.unwrap()
|
|
2172
|
+
})
|
|
2173
|
+
});
|
|
2174
|
+
|
|
2175
|
+
// src/modules/user/update/update.dtos.ts
|
|
2176
|
+
var import_v424 = require("zod/v4");
|
|
2177
|
+
var changeEmailTokenPayloadSchema = import_v424.z.object({
|
|
2178
|
+
jti: import_v424.z.string(),
|
|
2179
|
+
sub: import_v424.z.string(),
|
|
2180
|
+
newEmail: import_v424.z.string(),
|
|
2181
|
+
exp: import_v424.z.number(),
|
|
2182
|
+
iss: import_v424.z.string(),
|
|
2183
|
+
typ: import_v424.z.string()
|
|
2184
|
+
});
|
|
2185
|
+
|
|
2186
|
+
// src/modules/video-analysis/video-analysis.dtos.ts
|
|
2187
|
+
var import_v425 = require("zod/v4");
|
|
2188
|
+
var enqueueAanalyzeVideoParamsSchema = import_v425.z.object({
|
|
2189
|
+
fileKey: import_v425.z.string(),
|
|
2190
|
+
exercise: import_v425.z.string(),
|
|
2191
|
+
userId: userDbSchema.shape.id,
|
|
2192
|
+
requestId: import_v425.z.string(),
|
|
2193
|
+
sentryTrace: import_v425.z.string().optional(),
|
|
2194
|
+
baggage: import_v425.z.string().optional()
|
|
2195
|
+
});
|
|
2196
|
+
var analyzeVideoPayloadSchema = enqueueAanalyzeVideoParamsSchema.extend({
|
|
2197
|
+
expiresAt: import_v425.z.number()
|
|
2198
|
+
});
|
|
2199
|
+
var squatRepetitionSchema = import_v425.z.object({
|
|
2200
|
+
depth: import_v425.z.object({
|
|
2201
|
+
value: import_v425.z.number(),
|
|
2202
|
+
status: import_v425.z.string(),
|
|
2203
|
+
confidence: import_v425.z.number()
|
|
2204
|
+
}),
|
|
2205
|
+
backLean: import_v425.z.object({
|
|
2206
|
+
value: import_v425.z.number(),
|
|
2207
|
+
excessive: import_v425.z.boolean(),
|
|
2208
|
+
confidence: import_v425.z.number()
|
|
2209
|
+
}),
|
|
2210
|
+
audit: import_v425.z.object({
|
|
2211
|
+
framesAnalyzed: import_v425.z.number(),
|
|
2212
|
+
validFrames: import_v425.z.number(),
|
|
2213
|
+
cameraAngle: import_v425.z.string(),
|
|
2214
|
+
rawBottomAngle: import_v425.z.number(),
|
|
2215
|
+
samplingRate: import_v425.z.string()
|
|
2216
|
+
})
|
|
2217
|
+
});
|
|
2218
|
+
var analyzeVideoResultPayloadSchema = /* @__PURE__ */ __name((resultSchema) => import_v425.z.intersection(import_v425.z.object({
|
|
2219
|
+
jobId: import_v425.z.string(),
|
|
2220
|
+
userId: userDbSchema.shape.id,
|
|
2221
|
+
exercise: import_v425.z.string(),
|
|
2222
|
+
requestId: import_v425.z.string().optional()
|
|
2223
|
+
}), import_v425.z.discriminatedUnion("status", [
|
|
2224
|
+
import_v425.z.object({
|
|
2225
|
+
status: import_v425.z.literal("completed"),
|
|
2226
|
+
result: import_v425.z.array(resultSchema),
|
|
2227
|
+
error: import_v425.z.null()
|
|
2228
|
+
}),
|
|
2229
|
+
import_v425.z.object({
|
|
2230
|
+
status: import_v425.z.literal("failed"),
|
|
2231
|
+
result: import_v425.z.null(),
|
|
2232
|
+
error: import_v425.z.string()
|
|
2233
|
+
})
|
|
2234
|
+
])), "analyzeVideoResultPayloadSchema");
|
|
2235
|
+
|
|
2236
|
+
// src/modules/video-analysis/video-analysis.schemas.ts
|
|
2237
|
+
var import_v426 = require("zod/v4");
|
|
2238
|
+
var getPresignedUrlS3Request = import_v426.z.object({
|
|
2239
|
+
body: import_v426.z.object({
|
|
2240
|
+
exercise: exerciseDbSchema.shape.name,
|
|
2241
|
+
fileType: import_v426.z.string(),
|
|
2242
|
+
jobId: import_v426.z.string()
|
|
2243
|
+
})
|
|
2244
|
+
});
|
|
2245
|
+
var getPresignedUrlFromS3ResponseSchema = import_v426.z.object({
|
|
2246
|
+
uploadUrl: import_v426.z.string(),
|
|
2247
|
+
fileKey: import_v426.z.string(),
|
|
2248
|
+
requestId: import_v426.z.string()
|
|
2249
|
+
});
|
|
2250
|
+
|
|
2251
|
+
// src/modules/web-sockets/web-sockets.schemas.ts
|
|
2252
|
+
var import_v427 = require("zod/v4");
|
|
2253
|
+
var generateTicketRequest = import_v427.z.object({
|
|
2254
|
+
body: import_v427.z.object({
|
|
2255
|
+
username: userDbSchema.shape.username
|
|
2256
|
+
})
|
|
2257
|
+
});
|
|
2258
|
+
var generateTicketResponseSchema = import_v427.z.object({
|
|
2259
|
+
ticket: import_v427.z.string()
|
|
2260
|
+
});
|
|
2261
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
2262
|
+
0 && (module.exports = {
|
|
2263
|
+
accessTokenPayloadSchema,
|
|
2264
|
+
addAerobicsRequest,
|
|
2265
|
+
addWorkoutRequest,
|
|
2266
|
+
addWorkoutResponseSchema,
|
|
2267
|
+
adherenceExerciseStatsSchema,
|
|
2268
|
+
aerobicTrackingDbSchema,
|
|
2269
|
+
aerobicsDailyRecordSchema,
|
|
2270
|
+
aerobicsWeeklyRecordSchema,
|
|
2271
|
+
allUserMessageSchema,
|
|
2272
|
+
analyzeVideoPayloadSchema,
|
|
2273
|
+
analyzeVideoResultPayloadSchema,
|
|
2274
|
+
appleOAuthRequest,
|
|
2275
|
+
appleTokenVerificationResultSchema,
|
|
2276
|
+
bootstrapRequest,
|
|
2277
|
+
bootstrapResponseSchema,
|
|
2278
|
+
changeEmailAndVerifyRequest,
|
|
2279
|
+
changeEmailTokenPayloadSchema,
|
|
2280
|
+
checkUserVerifyRequest,
|
|
2281
|
+
createUserRequest,
|
|
2282
|
+
createUserResponseSchema,
|
|
2283
|
+
createUserUserSchema,
|
|
2284
|
+
deleteMessageRequest,
|
|
2285
|
+
deleteMessageResponseSchema,
|
|
2286
|
+
deleteProfilePicRequest,
|
|
2287
|
+
deletedMessageSchema,
|
|
2288
|
+
emailVerifyPayloadSchema,
|
|
2289
|
+
enqueueAanalyzeVideoParamsSchema,
|
|
2290
|
+
exerciseDbSchema,
|
|
2291
|
+
exerciseInPlanSchema,
|
|
2292
|
+
exerciseMetadataSchema,
|
|
2293
|
+
exerciseToWorkoutSplitDbSchema,
|
|
2294
|
+
exerciseToWorkoutSplitExpandedViewDbSchema,
|
|
2295
|
+
exerciseTrackingAnalysisSchema,
|
|
2296
|
+
exerciseTrackingAndStatsSchema,
|
|
2297
|
+
exerciseTrackingDbSchema,
|
|
2298
|
+
exerciseTrackingExpandedViewDbSchema,
|
|
2299
|
+
exerciseTrackingPrMaxSchema,
|
|
2300
|
+
finishUserWorkoutResponseSchema,
|
|
2301
|
+
finishWorkoutRequest,
|
|
2302
|
+
forgotPasswordPayloadSchema,
|
|
2303
|
+
generateTicketRequest,
|
|
2304
|
+
generateTicketResponseSchema,
|
|
2305
|
+
getAerobicsRequest,
|
|
2306
|
+
getAllExercisesExerciseSchema,
|
|
2307
|
+
getAllExercisesResponseSchema,
|
|
2308
|
+
getAllMessagesRequest,
|
|
2309
|
+
getAllUserMessagesResponseSchema,
|
|
2310
|
+
getAnalyticsResponseSchema,
|
|
2311
|
+
getAuthenticatedUserByIdResponseSchema,
|
|
2312
|
+
getExerciseTrackingRequest,
|
|
2313
|
+
getExerciseTrackingResponseSchema,
|
|
2314
|
+
getPresignedUrlFromS3ResponseSchema,
|
|
2315
|
+
getPresignedUrlS3Request,
|
|
2316
|
+
getWholeUserWorkoutPlanResponseSchema,
|
|
2317
|
+
getWholeWorkoutPlanRequest,
|
|
2318
|
+
googleOAuthRequest,
|
|
2319
|
+
googleTokenVerificationResultSchema,
|
|
2320
|
+
loginRequest,
|
|
2321
|
+
loginResponseSchema,
|
|
2322
|
+
logoutResponseSchema,
|
|
2323
|
+
markMessageAsReadRequest,
|
|
2324
|
+
markMessageAsReadResponseSchema,
|
|
2325
|
+
messageAfterSendResponseSchema,
|
|
2326
|
+
messageAsReadSchema,
|
|
2327
|
+
messageDbSchema,
|
|
2328
|
+
oAuthLoginResponseSchema,
|
|
2329
|
+
oauthAccountDbSchema,
|
|
2330
|
+
proceedLoginResponseSchema,
|
|
2331
|
+
prsViewDbSchema,
|
|
2332
|
+
queryGetExerciseMapByMuscleRowSchema,
|
|
2333
|
+
refreshTokenResponseSchema,
|
|
2334
|
+
resetPasswordRequest,
|
|
2335
|
+
resetPasswordResponseSchema,
|
|
2336
|
+
saveUserPushTokenRequest,
|
|
2337
|
+
sendChangePassEmailRequest,
|
|
2338
|
+
sendVerificationMailRequest,
|
|
2339
|
+
serializedDateSchema,
|
|
2340
|
+
setProfilePicAndUpdateDBResponseSchema,
|
|
2341
|
+
squatRepetitionSchema,
|
|
2342
|
+
timezoneSchema,
|
|
2343
|
+
tokenVersionResultSchema,
|
|
2344
|
+
trackingByDateItemSchema,
|
|
2345
|
+
trackingBySplitNameItemSchema,
|
|
2346
|
+
trackingMapItemSchema,
|
|
2347
|
+
trackingSetDbSchema,
|
|
2348
|
+
updateAuthenticatedUserResponseSchema,
|
|
2349
|
+
updateUserRequest,
|
|
2350
|
+
userAerobicsResponseSchema,
|
|
2351
|
+
userAfterBumpSchema,
|
|
2352
|
+
userByIndetifierSchema,
|
|
2353
|
+
userDataResponseSchema,
|
|
2354
|
+
userDataSchema,
|
|
2355
|
+
userDbSchema,
|
|
2356
|
+
userInsertDbSchema,
|
|
2357
|
+
userReminderSettingDbSchema,
|
|
2358
|
+
userSplitInformationDbSchema,
|
|
2359
|
+
userUpdateDbSchema,
|
|
2360
|
+
verifyAccountRequest,
|
|
2361
|
+
weeklyDataSchema,
|
|
2362
|
+
wholeUserWorkoutPlanSchema,
|
|
2363
|
+
workoutPlanDbSchema,
|
|
2364
|
+
workoutRmRecordSchema,
|
|
2365
|
+
workoutSetDbSchema,
|
|
2366
|
+
workoutSplitDbSchema,
|
|
2367
|
+
workoutSplitSchema,
|
|
2368
|
+
workoutSplitsMapItemSchema,
|
|
2369
|
+
workoutSplitsMapSchema,
|
|
2370
|
+
workoutSummaryDbSchema
|
|
2371
|
+
});
|