90dc-core 1.19.2 → 1.19.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/dbmodels/index.d.ts +3 -2
- package/dist/lib/dbmodels/index.d.ts.map +1 -1
- package/dist/lib/dbmodels/{UserProgressPhoto.d.ts → user/UserProgressPhoto.d.ts} +1 -1
- package/dist/lib/dbmodels/user/UserProgressPhoto.d.ts.map +1 -0
- package/package.json +1 -1
- package/dist/index.js +0 -43
- package/dist/index.js.map +0 -1
- package/dist/lib/Errors/AppError.js +0 -104
- package/dist/lib/Errors/AppError.js.map +0 -1
- package/dist/lib/Errors/Errors.js +0 -42
- package/dist/lib/Errors/Errors.js.map +0 -1
- package/dist/lib/classes/Database.js +0 -154
- package/dist/lib/classes/Database.js.map +0 -1
- package/dist/lib/classes/Redis.js +0 -63
- package/dist/lib/classes/Redis.js.map +0 -1
- package/dist/lib/clients/EmailClient.js +0 -188
- package/dist/lib/clients/EmailClient.js.map +0 -1
- package/dist/lib/clients/FirebasePushNotificationClient.js +0 -688
- package/dist/lib/clients/FirebasePushNotificationClient.js.map +0 -1
- package/dist/lib/clients/ImagesClient.js +0 -271
- package/dist/lib/clients/ImagesClient.js.map +0 -1
- package/dist/lib/clients/MailingClient.js +0 -84
- package/dist/lib/clients/MailingClient.js.map +0 -1
- package/dist/lib/clients/PushNotificationClient.js +0 -478
- package/dist/lib/clients/PushNotificationClient.js.map +0 -1
- package/dist/lib/clients/types/email.types.js +0 -3
- package/dist/lib/clients/types/email.types.js.map +0 -1
- package/dist/lib/clients/types/images.types.js +0 -3
- package/dist/lib/clients/types/images.types.js.map +0 -1
- package/dist/lib/clients/types/mailing.types.js +0 -3
- package/dist/lib/clients/types/mailing.types.js.map +0 -1
- package/dist/lib/config/ConfigValidator.js +0 -162
- package/dist/lib/config/ConfigValidator.js.map +0 -1
- package/dist/lib/controllers/BaseController.js +0 -64
- package/dist/lib/controllers/BaseController.js.map +0 -1
- package/dist/lib/db/migrations/20260330000000-create-user-progress-photos.js +0 -60
- package/dist/lib/db/migrations/20260330000000-create-user-progress-photos.js.map +0 -1
- package/dist/lib/dbmodels/UserProgressPhoto.d.ts.map +0 -1
- package/dist/lib/dbmodels/UserProgressPhoto.js +0 -59
- package/dist/lib/dbmodels/UserProgressPhoto.js.map +0 -1
- package/dist/lib/dbmodels/coaching/Answer.js +0 -51
- package/dist/lib/dbmodels/coaching/Answer.js.map +0 -1
- package/dist/lib/dbmodels/coaching/ClientNote.js +0 -75
- package/dist/lib/dbmodels/coaching/ClientNote.js.map +0 -1
- package/dist/lib/dbmodels/coaching/ClientTag.js +0 -45
- package/dist/lib/dbmodels/coaching/ClientTag.js.map +0 -1
- package/dist/lib/dbmodels/coaching/Question.js +0 -60
- package/dist/lib/dbmodels/coaching/Question.js.map +0 -1
- package/dist/lib/dbmodels/coaching/Questionnaire.js +0 -39
- package/dist/lib/dbmodels/coaching/Questionnaire.js.map +0 -1
- package/dist/lib/dbmodels/coaching/QuestionnaireResponse.js +0 -42
- package/dist/lib/dbmodels/coaching/QuestionnaireResponse.js.map +0 -1
- package/dist/lib/dbmodels/coaching/WeeklyCheckIn.js +0 -69
- package/dist/lib/dbmodels/coaching/WeeklyCheckIn.js.map +0 -1
- package/dist/lib/dbmodels/coaching/WeightRecord.js +0 -49
- package/dist/lib/dbmodels/coaching/WeightRecord.js.map +0 -1
- package/dist/lib/dbmodels/diet/DietDay.js +0 -50
- package/dist/lib/dbmodels/diet/DietDay.js.map +0 -1
- package/dist/lib/dbmodels/diet/DietMeal.js +0 -74
- package/dist/lib/dbmodels/diet/DietMeal.js.map +0 -1
- package/dist/lib/dbmodels/diet/DietMealCompletion.js +0 -69
- package/dist/lib/dbmodels/diet/DietMealCompletion.js.map +0 -1
- package/dist/lib/dbmodels/diet/DietMealRecipe.js +0 -67
- package/dist/lib/dbmodels/diet/DietMealRecipe.js.map +0 -1
- package/dist/lib/dbmodels/diet/DietMealRecipeIngredient.js +0 -46
- package/dist/lib/dbmodels/diet/DietMealRecipeIngredient.js.map +0 -1
- package/dist/lib/dbmodels/diet/DietProgram.js +0 -98
- package/dist/lib/dbmodels/diet/DietProgram.js.map +0 -1
- package/dist/lib/dbmodels/diet/Ingredient.js +0 -88
- package/dist/lib/dbmodels/diet/Ingredient.js.map +0 -1
- package/dist/lib/dbmodels/diet/IngredientTag.js +0 -64
- package/dist/lib/dbmodels/diet/IngredientTag.js.map +0 -1
- package/dist/lib/dbmodels/diet/IngredientTags.js +0 -29
- package/dist/lib/dbmodels/diet/IngredientTags.js.map +0 -1
- package/dist/lib/dbmodels/diet/Recipe.js +0 -173
- package/dist/lib/dbmodels/diet/Recipe.js.map +0 -1
- package/dist/lib/dbmodels/diet/RecipeIngredient.js +0 -78
- package/dist/lib/dbmodels/diet/RecipeIngredient.js.map +0 -1
- package/dist/lib/dbmodels/diet/RecipeTag.js +0 -44
- package/dist/lib/dbmodels/diet/RecipeTag.js.map +0 -1
- package/dist/lib/dbmodels/diet/RecipeTags.js +0 -24
- package/dist/lib/dbmodels/diet/RecipeTags.js.map +0 -1
- package/dist/lib/dbmodels/diet/ShoppingList.js +0 -69
- package/dist/lib/dbmodels/diet/ShoppingList.js.map +0 -1
- package/dist/lib/dbmodels/diet/ShoppingListItem.js +0 -66
- package/dist/lib/dbmodels/diet/ShoppingListItem.js.map +0 -1
- package/dist/lib/dbmodels/diet/TranslatedRecipe.js +0 -122
- package/dist/lib/dbmodels/diet/TranslatedRecipe.js.map +0 -1
- package/dist/lib/dbmodels/diet/TranslatedRecipeTag.js +0 -47
- package/dist/lib/dbmodels/diet/TranslatedRecipeTag.js.map +0 -1
- package/dist/lib/dbmodels/diet/TranslatedRecipeTags.js +0 -24
- package/dist/lib/dbmodels/diet/TranslatedRecipeTags.js.map +0 -1
- package/dist/lib/dbmodels/diet/UserDietPreferences.js +0 -85
- package/dist/lib/dbmodels/diet/UserDietPreferences.js.map +0 -1
- package/dist/lib/dbmodels/gamification/Badge.js +0 -62
- package/dist/lib/dbmodels/gamification/Badge.js.map +0 -1
- package/dist/lib/dbmodels/gamification/StreaksLog.js +0 -37
- package/dist/lib/dbmodels/gamification/StreaksLog.js.map +0 -1
- package/dist/lib/dbmodels/gamification/TranslatedBadge.js +0 -45
- package/dist/lib/dbmodels/gamification/TranslatedBadge.js.map +0 -1
- package/dist/lib/dbmodels/gamification/xpAndLeaderboards/UserRankHistory.js +0 -48
- package/dist/lib/dbmodels/gamification/xpAndLeaderboards/UserRankHistory.js.map +0 -1
- package/dist/lib/dbmodels/gamification/xpAndLeaderboards/XpEvent.js +0 -53
- package/dist/lib/dbmodels/gamification/xpAndLeaderboards/XpEvent.js.map +0 -1
- package/dist/lib/dbmodels/gamification/xpAndLeaderboards/XpTransaction.js +0 -68
- package/dist/lib/dbmodels/gamification/xpAndLeaderboards/XpTransaction.js.map +0 -1
- package/dist/lib/dbmodels/index.js +0 -287
- package/dist/lib/dbmodels/index.js.map +0 -1
- package/dist/lib/dbmodels/nonconsprogram/NonConsumableProgram.d.ts +0 -32
- package/dist/lib/dbmodels/nonconsprogram/NonConsumableProgram.d.ts.map +0 -1
- package/dist/lib/dbmodels/nonconsprogram/NonConsumableProgram.js +0 -155
- package/dist/lib/dbmodels/nonconsprogram/NonConsumableProgram.js.map +0 -1
- package/dist/lib/dbmodels/nonconsprogram/NonConsumableProgramWebContent.d.ts +0 -22
- package/dist/lib/dbmodels/nonconsprogram/NonConsumableProgramWebContent.d.ts.map +0 -1
- package/dist/lib/dbmodels/nonconsprogram/NonConsumableProgramWebContent.js +0 -108
- package/dist/lib/dbmodels/nonconsprogram/NonConsumableProgramWebContent.js.map +0 -1
- package/dist/lib/dbmodels/nonconsprogram/TranslatedConsumableProgram.d.ts +0 -20
- package/dist/lib/dbmodels/nonconsprogram/TranslatedConsumableProgram.d.ts.map +0 -1
- package/dist/lib/dbmodels/nonconsprogram/TranslatedConsumableProgram.js +0 -97
- package/dist/lib/dbmodels/nonconsprogram/TranslatedConsumableProgram.js.map +0 -1
- package/dist/lib/dbmodels/nonconsprogram/TranslatedNonConsumableProgramWebContent.d.ts +0 -22
- package/dist/lib/dbmodels/nonconsprogram/TranslatedNonConsumableProgramWebContent.d.ts.map +0 -1
- package/dist/lib/dbmodels/nonconsprogram/TranslatedNonConsumableProgramWebContent.js +0 -115
- package/dist/lib/dbmodels/nonconsprogram/TranslatedNonConsumableProgramWebContent.js.map +0 -1
- package/dist/lib/dbmodels/nonconsprogram/UserNonConsumableProgram.d.ts +0 -7
- package/dist/lib/dbmodels/nonconsprogram/UserNonConsumableProgram.d.ts.map +0 -1
- package/dist/lib/dbmodels/nonconsprogram/UserNonConsumableProgram.js +0 -41
- package/dist/lib/dbmodels/nonconsprogram/UserNonConsumableProgram.js.map +0 -1
- package/dist/lib/dbmodels/notifications/NotificationModels.js +0 -38
- package/dist/lib/dbmodels/notifications/NotificationModels.js.map +0 -1
- package/dist/lib/dbmodels/notifications/TranslatedNotification.js +0 -45
- package/dist/lib/dbmodels/notifications/TranslatedNotification.js.map +0 -1
- package/dist/lib/dbmodels/program/Challenge.d.ts +0 -13
- package/dist/lib/dbmodels/program/Challenge.d.ts.map +0 -1
- package/dist/lib/dbmodels/program/Challenge.js +0 -63
- package/dist/lib/dbmodels/program/Challenge.js.map +0 -1
- package/dist/lib/dbmodels/program/ChallengeBlueprint.js +0 -75
- package/dist/lib/dbmodels/program/ChallengeBlueprint.js.map +0 -1
- package/dist/lib/dbmodels/program/CircularProgramDraft.js +0 -82
- package/dist/lib/dbmodels/program/CircularProgramDraft.js.map +0 -1
- package/dist/lib/dbmodels/program/CoachExerciseNote.js +0 -61
- package/dist/lib/dbmodels/program/CoachExerciseNote.js.map +0 -1
- package/dist/lib/dbmodels/program/CustomProgramBlueprint.js +0 -84
- package/dist/lib/dbmodels/program/CustomProgramBlueprint.js.map +0 -1
- package/dist/lib/dbmodels/program/CustomStrengthTest.js +0 -55
- package/dist/lib/dbmodels/program/CustomStrengthTest.js.map +0 -1
- package/dist/lib/dbmodels/program/CustomStrengthTestExercises.js +0 -69
- package/dist/lib/dbmodels/program/CustomStrengthTestExercises.js.map +0 -1
- package/dist/lib/dbmodels/program/CustomWorkoutBlueprint.js +0 -58
- package/dist/lib/dbmodels/program/CustomWorkoutBlueprint.js.map +0 -1
- package/dist/lib/dbmodels/program/Exercise.d.ts +0 -23
- package/dist/lib/dbmodels/program/Exercise.d.ts.map +0 -1
- package/dist/lib/dbmodels/program/Exercise.js +0 -101
- package/dist/lib/dbmodels/program/Exercise.js.map +0 -1
- package/dist/lib/dbmodels/program/ExerciseModels.d.ts +0 -28
- package/dist/lib/dbmodels/program/ExerciseModels.d.ts.map +0 -1
- package/dist/lib/dbmodels/program/ExerciseModels.js +0 -149
- package/dist/lib/dbmodels/program/ExerciseModels.js.map +0 -1
- package/dist/lib/dbmodels/program/Program.d.ts +0 -15
- package/dist/lib/dbmodels/program/Program.d.ts.map +0 -1
- package/dist/lib/dbmodels/program/Program.js +0 -76
- package/dist/lib/dbmodels/program/Program.js.map +0 -1
- package/dist/lib/dbmodels/program/ProgressEntry.d.ts +0 -26
- package/dist/lib/dbmodels/program/ProgressEntry.d.ts.map +0 -1
- package/dist/lib/dbmodels/program/ProgressEntry.js +0 -77
- package/dist/lib/dbmodels/program/ProgressEntry.js.map +0 -1
- package/dist/lib/dbmodels/program/RestDay.js +0 -33
- package/dist/lib/dbmodels/program/RestDay.js.map +0 -1
- package/dist/lib/dbmodels/program/StrengthTest.d.ts +0 -10
- package/dist/lib/dbmodels/program/StrengthTest.d.ts.map +0 -1
- package/dist/lib/dbmodels/program/StrengthTest.js +0 -39
- package/dist/lib/dbmodels/program/StrengthTest.js.map +0 -1
- package/dist/lib/dbmodels/program/StrengthTestExercise.d.ts +0 -15
- package/dist/lib/dbmodels/program/StrengthTestExercise.d.ts.map +0 -1
- package/dist/lib/dbmodels/program/StrengthTestExercise.js +0 -72
- package/dist/lib/dbmodels/program/StrengthTestExercise.js.map +0 -1
- package/dist/lib/dbmodels/program/StrengthTestSession.js +0 -73
- package/dist/lib/dbmodels/program/StrengthTestSession.js.map +0 -1
- package/dist/lib/dbmodels/program/Superset.d.ts +0 -13
- package/dist/lib/dbmodels/program/Superset.d.ts.map +0 -1
- package/dist/lib/dbmodels/program/Superset.js +0 -46
- package/dist/lib/dbmodels/program/Superset.js.map +0 -1
- package/dist/lib/dbmodels/program/ThirtyDayChallenge.js +0 -70
- package/dist/lib/dbmodels/program/ThirtyDayChallenge.js.map +0 -1
- package/dist/lib/dbmodels/program/ThirtyDayChallengeStrengthTest.js +0 -55
- package/dist/lib/dbmodels/program/ThirtyDayChallengeStrengthTest.js.map +0 -1
- package/dist/lib/dbmodels/program/TranslatedChallenge.d.ts +0 -15
- package/dist/lib/dbmodels/program/TranslatedChallenge.d.ts.map +0 -1
- package/dist/lib/dbmodels/program/TranslatedChallenge.js +0 -69
- package/dist/lib/dbmodels/program/TranslatedChallenge.js.map +0 -1
- package/dist/lib/dbmodels/program/TranslatedExerciseModel.d.ts +0 -25
- package/dist/lib/dbmodels/program/TranslatedExerciseModel.d.ts.map +0 -1
- package/dist/lib/dbmodels/program/TranslatedExerciseModel.js +0 -123
- package/dist/lib/dbmodels/program/TranslatedExerciseModel.js.map +0 -1
- package/dist/lib/dbmodels/program/TranslatedStrengthTest.d.ts +0 -12
- package/dist/lib/dbmodels/program/TranslatedStrengthTest.d.ts.map +0 -1
- package/dist/lib/dbmodels/program/TranslatedStrengthTest.js +0 -45
- package/dist/lib/dbmodels/program/TranslatedStrengthTest.js.map +0 -1
- package/dist/lib/dbmodels/program/TranslatedStrengthTestExercise.d.ts +0 -16
- package/dist/lib/dbmodels/program/TranslatedStrengthTestExercise.d.ts.map +0 -1
- package/dist/lib/dbmodels/program/TranslatedStrengthTestExercise.js +0 -78
- package/dist/lib/dbmodels/program/TranslatedStrengthTestExercise.js.map +0 -1
- package/dist/lib/dbmodels/program/UserChallenge.d.ts +0 -10
- package/dist/lib/dbmodels/program/UserChallenge.d.ts.map +0 -1
- package/dist/lib/dbmodels/program/UserChallenge.js +0 -47
- package/dist/lib/dbmodels/program/UserChallenge.js.map +0 -1
- package/dist/lib/dbmodels/program/UserExerciseNote.js +0 -61
- package/dist/lib/dbmodels/program/UserExerciseNote.js.map +0 -1
- package/dist/lib/dbmodels/program/UserStrengthTests.d.ts +0 -11
- package/dist/lib/dbmodels/program/UserStrengthTests.d.ts.map +0 -1
- package/dist/lib/dbmodels/program/UserStrengthTests.js +0 -54
- package/dist/lib/dbmodels/program/UserStrengthTests.js.map +0 -1
- package/dist/lib/dbmodels/program/Workout.d.ts +0 -14
- package/dist/lib/dbmodels/program/Workout.d.ts.map +0 -1
- package/dist/lib/dbmodels/program/Workout.js +0 -66
- package/dist/lib/dbmodels/program/Workout.js.map +0 -1
- package/dist/lib/dbmodels/program/WorkoutCompletion.js +0 -65
- package/dist/lib/dbmodels/program/WorkoutCompletion.js.map +0 -1
- package/dist/lib/dbmodels/program/WorkoutSession.js +0 -93
- package/dist/lib/dbmodels/program/WorkoutSession.js.map +0 -1
- package/dist/lib/dbmodels/subscription/Subscription.d.ts +0 -19
- package/dist/lib/dbmodels/subscription/Subscription.d.ts.map +0 -1
- package/dist/lib/dbmodels/subscription/Subscription.js +0 -91
- package/dist/lib/dbmodels/subscription/Subscription.js.map +0 -1
- package/dist/lib/dbmodels/subscription/SubscriptionEvent.js +0 -79
- package/dist/lib/dbmodels/subscription/SubscriptionEvent.js.map +0 -1
- package/dist/lib/dbmodels/subscription/SubscriptionLog.d.ts +0 -9
- package/dist/lib/dbmodels/subscription/SubscriptionLog.d.ts.map +0 -1
- package/dist/lib/dbmodels/subscription/SubscriptionLog.js +0 -42
- package/dist/lib/dbmodels/subscription/SubscriptionLog.js.map +0 -1
- package/dist/lib/dbmodels/subscription/SubscriptionRefund.js +0 -92
- package/dist/lib/dbmodels/subscription/SubscriptionRefund.js.map +0 -1
- package/dist/lib/dbmodels/user/DeviceTokens.js +0 -34
- package/dist/lib/dbmodels/user/DeviceTokens.js.map +0 -1
- package/dist/lib/dbmodels/user/PersistedUser.d.ts +0 -43
- package/dist/lib/dbmodels/user/PersistedUser.d.ts.map +0 -1
- package/dist/lib/dbmodels/user/PersistedUser.js +0 -237
- package/dist/lib/dbmodels/user/PersistedUser.js.map +0 -1
- package/dist/lib/dbmodels/user/UserAddons.js +0 -26
- package/dist/lib/dbmodels/user/UserAddons.js.map +0 -1
- package/dist/lib/dbmodels/user/UserBadges.js +0 -63
- package/dist/lib/dbmodels/user/UserBadges.js.map +0 -1
- package/dist/lib/dbmodels/user/UserCoach.js +0 -40
- package/dist/lib/dbmodels/user/UserCoach.js.map +0 -1
- package/dist/lib/dbmodels/user/UserDiscount.js +0 -24
- package/dist/lib/dbmodels/user/UserDiscount.js.map +0 -1
- package/dist/lib/dbmodels/user/UserOptions.js +0 -34
- package/dist/lib/dbmodels/user/UserOptions.js.map +0 -1
- package/dist/lib/dbmodels/user/UserStreaks.js +0 -64
- package/dist/lib/dbmodels/user/UserStreaks.js.map +0 -1
- package/dist/lib/dbmodels/user/UsersFriends.js +0 -46
- package/dist/lib/dbmodels/user/UsersFriends.js.map +0 -1
- package/dist/lib/enums/ProgramEnums.d.ts +0 -18
- package/dist/lib/enums/ProgramEnums.d.ts.map +0 -1
- package/dist/lib/enums/ProgramEnums.js +0 -22
- package/dist/lib/enums/ProgramEnums.js.map +0 -1
- package/dist/lib/enums/ProgramTemplates.js +0 -738
- package/dist/lib/enums/ProgramTemplates.js.map +0 -1
- package/dist/lib/middlewares/ErrorMiddleware.js +0 -141
- package/dist/lib/middlewares/ErrorMiddleware.js.map +0 -1
- package/dist/lib/middlewares/ValidationMiddleware.js +0 -24
- package/dist/lib/middlewares/ValidationMiddleware.js.map +0 -1
- package/dist/lib/models/BlueprintInterfaces.js +0 -3
- package/dist/lib/models/BlueprintInterfaces.js.map +0 -1
- package/dist/lib/models/ExerciseInterfaces.d.ts +0 -68
- package/dist/lib/models/ExerciseInterfaces.d.ts.map +0 -1
- package/dist/lib/models/ExerciseInterfaces.js +0 -3
- package/dist/lib/models/ExerciseInterfaces.js.map +0 -1
- package/dist/lib/models/NotificationInterfaces.js +0 -11
- package/dist/lib/models/NotificationInterfaces.js.map +0 -1
- package/dist/lib/models/ProgramInterfaces.js +0 -3
- package/dist/lib/models/ProgramInterfaces.js.map +0 -1
- package/dist/lib/models/UserInterfaces.js +0 -3
- package/dist/lib/models/UserInterfaces.js.map +0 -1
- package/dist/lib/models/WorkoutInterfaces.js +0 -3
- package/dist/lib/models/WorkoutInterfaces.js.map +0 -1
- package/dist/lib/scripts/cli.js +0 -82
- package/dist/lib/scripts/cli.js.map +0 -1
- package/dist/lib/scripts/populate-exercise-thumbnails.js +0 -64
- package/dist/lib/scripts/populate-exercise-thumbnails.js.map +0 -1
- package/dist/lib/scripts/setup-database.js +0 -43
- package/dist/lib/scripts/setup-database.js.map +0 -1
- package/dist/lib/scripts/verify-indexes.js +0 -94
- package/dist/lib/scripts/verify-indexes.js.map +0 -1
- package/dist/lib/testing/testFixtures.js +0 -520
- package/dist/lib/testing/testFixtures.js.map +0 -1
- package/dist/lib/testing/testHelpers.js +0 -149
- package/dist/lib/testing/testHelpers.js.map +0 -1
- package/dist/lib/utils/AuthenticationUtil.js +0 -481
- package/dist/lib/utils/AuthenticationUtil.js.map +0 -1
- package/dist/lib/utils/Logger.js +0 -242
- package/dist/lib/utils/Logger.js.map +0 -1
- package/dist/lib/utils/NotificationClient.js +0 -371
- package/dist/lib/utils/NotificationClient.js.map +0 -1
- package/dist/lib/utils/NotificationsUtil.js +0 -95
- package/dist/lib/utils/NotificationsUtil.js.map +0 -1
- package/dist/lib/utils/SecretManager.js +0 -107
- package/dist/lib/utils/SecretManager.js.map +0 -1
- package/dist/lib/utils/SentryUtil.js +0 -140
- package/dist/lib/utils/SentryUtil.js.map +0 -1
- package/dist/lib/utils/imageValidation.js +0 -31
- package/dist/lib/utils/imageValidation.js.map +0 -1
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { Log } from "../utils/Logger.js";
|
|
3
|
-
const logger = Log.getInstance().extend("config-validator");
|
|
4
|
-
export const BaseConfigSchema = z.object({
|
|
5
|
-
// Environment
|
|
6
|
-
NODE_ENV: z.enum([
|
|
7
|
-
"development",
|
|
8
|
-
"staging",
|
|
9
|
-
"production"
|
|
10
|
-
]).default("development"),
|
|
11
|
-
PORT: z.coerce.number().min(1000).max(65535).default(3000),
|
|
12
|
-
// Database
|
|
13
|
-
DB_POOL_MAX: z.coerce.number().min(1).max(100).default(20),
|
|
14
|
-
DB_POOL_MIN: z.coerce.number().min(0).max(50).default(5),
|
|
15
|
-
// Redis
|
|
16
|
-
REDIS_URL: z.url("REDIS_URL must be a valid URL").optional(),
|
|
17
|
-
// JWT Authentication
|
|
18
|
-
ACCESS_TOKEN_SECRET: z.string().min(20, "JWT_SECRET must be at least 32 characters for security"),
|
|
19
|
-
ACCESS_TOKEN_EXPIRY: z.string().default("1hr"),
|
|
20
|
-
REFRESH_TOKEN_SECRET: z.string().min(20, 'REFRESH_TOKEN_SECRET must be at least 32 characters for security'),
|
|
21
|
-
REFRESH_TOKEN_EXPIRY: z.string().default("30d"),
|
|
22
|
-
// Logging
|
|
23
|
-
LOG_LEVEL: z.enum([
|
|
24
|
-
"debug",
|
|
25
|
-
"info",
|
|
26
|
-
"warn",
|
|
27
|
-
"error"
|
|
28
|
-
]).default("info")
|
|
29
|
-
});
|
|
30
|
-
export class ConfigValidator {
|
|
31
|
-
schema;
|
|
32
|
-
config;
|
|
33
|
-
constructor(schema, env = process.env){
|
|
34
|
-
this.schema = schema;
|
|
35
|
-
this.config = this.validate(env);
|
|
36
|
-
}
|
|
37
|
-
validate(env) {
|
|
38
|
-
try {
|
|
39
|
-
const validated = this.schema.parse(env);
|
|
40
|
-
this.logSuccess();
|
|
41
|
-
return validated;
|
|
42
|
-
} catch (error) {
|
|
43
|
-
if (error instanceof z.ZodError) {
|
|
44
|
-
this.logErrors(error);
|
|
45
|
-
throw new ConfigurationError("Configuration validation failed", error.issues);
|
|
46
|
-
}
|
|
47
|
-
throw error;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
get(key) {
|
|
51
|
-
return this.config[key];
|
|
52
|
-
}
|
|
53
|
-
getAll() {
|
|
54
|
-
return this.config;
|
|
55
|
-
}
|
|
56
|
-
has(key) {
|
|
57
|
-
return this.config[key] !== undefined;
|
|
58
|
-
}
|
|
59
|
-
getOrDefault(key, defaultValue) {
|
|
60
|
-
return this.config[key] ?? defaultValue;
|
|
61
|
-
}
|
|
62
|
-
isProduction() {
|
|
63
|
-
return this.config.NODE_ENV === "production";
|
|
64
|
-
}
|
|
65
|
-
isDevelopment() {
|
|
66
|
-
return this.config.NODE_ENV === "development";
|
|
67
|
-
}
|
|
68
|
-
isStaging() {
|
|
69
|
-
return this.config.NODE_ENV === "staging";
|
|
70
|
-
}
|
|
71
|
-
logSuccess() {
|
|
72
|
-
logger.info("✅ Configuration validated successfully");
|
|
73
|
-
}
|
|
74
|
-
logErrors(error) {
|
|
75
|
-
logger.error("\n❌ Configuration validation failed:\n");
|
|
76
|
-
error.issues.forEach((issue)=>{
|
|
77
|
-
const path = issue.path.join(".");
|
|
78
|
-
logger.error(` ❌ ${path}: ${issue.message}`);
|
|
79
|
-
});
|
|
80
|
-
logger.error("\n💡 Fix these issues in your .env file and restart the service.\n");
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
export class ConfigurationError extends Error {
|
|
84
|
-
validationErrors;
|
|
85
|
-
constructor(message, validationErrors){
|
|
86
|
-
super(message), this.validationErrors = validationErrors;
|
|
87
|
-
this.name = "ConfigurationError";
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
export function createConfig(schema, env) {
|
|
91
|
-
return new ConfigValidator(schema, env);
|
|
92
|
-
}
|
|
93
|
-
export const CommonSchemas = {
|
|
94
|
-
database: z.object({
|
|
95
|
-
DATABASE_URL: z.url(),
|
|
96
|
-
DB_POOL_MAX: z.coerce.number().default(20),
|
|
97
|
-
DB_POOL_MIN: z.coerce.number().default(5),
|
|
98
|
-
DB_ACQUIRE_TIMEOUT: z.coerce.number().default(30000),
|
|
99
|
-
DB_IDLE_TIMEOUT: z.coerce.number().default(10000)
|
|
100
|
-
}),
|
|
101
|
-
redis: z.object({
|
|
102
|
-
REDIS_URL: z.url(),
|
|
103
|
-
REDIS_MAX_RETRIES: z.coerce.number().default(3),
|
|
104
|
-
REDIS_RETRY_DELAY: z.coerce.number().default(1000)
|
|
105
|
-
}),
|
|
106
|
-
jwt: z.object({
|
|
107
|
-
JWT_SECRET: z.string().min(32),
|
|
108
|
-
JWT_EXPIRY: z.string().default("1h"),
|
|
109
|
-
REFRESH_TOKEN_EXPIRY: z.string().default("7d"),
|
|
110
|
-
JWT_ISSUER: z.string().optional(),
|
|
111
|
-
JWT_AUDIENCE: z.string().optional()
|
|
112
|
-
}),
|
|
113
|
-
googleOAuth: z.object({
|
|
114
|
-
GOOGLE_CLIENT_ID: z.string().min(1),
|
|
115
|
-
GOOGLE_CLIENT_SECRET: z.string().min(1),
|
|
116
|
-
GOOGLE_REDIRECT_URI: z.string().url().optional()
|
|
117
|
-
}),
|
|
118
|
-
appleOAuth: z.object({
|
|
119
|
-
APPLE_TEAM_ID: z.string().min(1),
|
|
120
|
-
APPLE_CLIENT_ID: z.string().min(1),
|
|
121
|
-
APPLE_KEY_ID: z.string().min(1),
|
|
122
|
-
APPLE_PRIVATE_KEY_PATH: z.string().min(1)
|
|
123
|
-
}),
|
|
124
|
-
serviceUrls: z.object({
|
|
125
|
-
AUTH_SERVICE_URL: z.url(),
|
|
126
|
-
NOTIFICATION_SERVICE_URL: z.url(),
|
|
127
|
-
PROGRAM_SERVICE_URL: z.url(),
|
|
128
|
-
RESOURCE_SERVICE_URL: z.url(),
|
|
129
|
-
IMAGE_SERVICE_URL: z.url()
|
|
130
|
-
}),
|
|
131
|
-
featureFlags: z.object({
|
|
132
|
-
ENABLE_DISTRIBUTED_TRACING: z.coerce.boolean().default(false),
|
|
133
|
-
ENABLE_RATE_LIMITING: z.coerce.boolean().default(true),
|
|
134
|
-
ENABLE_REQUEST_LOGGING: z.coerce.boolean().default(true)
|
|
135
|
-
}),
|
|
136
|
-
postmark: z.object({
|
|
137
|
-
POSTMARK_API_KEY: z.string().min(1, "Postmark API key is required"),
|
|
138
|
-
POSTMARK_FROM_EMAIL: z.string().email("Valid from email is required"),
|
|
139
|
-
POSTMARK_REPLY_TO_EMAIL: z.string().email().optional(),
|
|
140
|
-
POSTMARK_TIMEOUT_MS: z.coerce.number().positive().default(10000)
|
|
141
|
-
}),
|
|
142
|
-
pushNotification: z.object({
|
|
143
|
-
// APNs Configuration (DEPRECATED - use Firebase instead)
|
|
144
|
-
APNS_KEY_ID: z.string().optional(),
|
|
145
|
-
APNS_TEAM_ID: z.string().optional(),
|
|
146
|
-
APNS_TOPIC: z.string().optional(),
|
|
147
|
-
APNS_PRIVATE_KEY: z.string().optional(),
|
|
148
|
-
APNS_PRODUCTION: z.enum([
|
|
149
|
-
"true",
|
|
150
|
-
"false",
|
|
151
|
-
"1",
|
|
152
|
-
"0"
|
|
153
|
-
]).transform((val)=>val === "true" || val === "1").or(z.boolean()).default(false).optional(),
|
|
154
|
-
// FCM Configuration (Firebase Admin SDK)
|
|
155
|
-
// Note: These are now loaded from GCP Secret Manager, not environment variables
|
|
156
|
-
FCM_PROJECT_ID: z.string().optional(),
|
|
157
|
-
FCM_CLIENT_EMAIL: z.string().optional(),
|
|
158
|
-
FCM_PRIVATE_KEY: z.string().optional()
|
|
159
|
-
})
|
|
160
|
-
};
|
|
161
|
-
|
|
162
|
-
//# sourceMappingURL=ConfigValidator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/config/ConfigValidator.ts"],"sourcesContent":["import { z } from \"zod\";\nimport {Log} from \"../utils/Logger.js\";\n\nconst logger: Log = Log.getInstance().extend(\"config-validator\");\n\n\nexport const BaseConfigSchema = z.object({\n // Environment\n NODE_ENV: z.enum([\"development\", \"staging\", \"production\"]).default(\"development\"),\n PORT: z.coerce.number().min(1000).max(65535).default(3000),\n\n // Database\n DB_POOL_MAX: z.coerce.number().min(1).max(100).default(20),\n DB_POOL_MIN: z.coerce.number().min(0).max(50).default(5),\n\n // Redis\n REDIS_URL: z.url(\"REDIS_URL must be a valid URL\").optional(),\n\n // JWT Authentication\n ACCESS_TOKEN_SECRET: z.string().min(20, \"JWT_SECRET must be at least 32 characters for security\"),\n ACCESS_TOKEN_EXPIRY: z.string().default(\"1hr\"),\n REFRESH_TOKEN_SECRET: z.string().min(20, 'REFRESH_TOKEN_SECRET must be at least 32 characters for security'),\n REFRESH_TOKEN_EXPIRY: z.string().default(\"30d\"),\n\n // Logging\n LOG_LEVEL: z.enum([\"debug\", \"info\", \"warn\", \"error\"]).default(\"info\"),\n});\n\nexport type BaseConfig = z.output<typeof BaseConfigSchema>;\n\nexport class ConfigValidator<T extends z.ZodType> {\n private readonly schema: T;\n private readonly config: z.output<T>;\n\n constructor(schema: T, env: Record<string, string | undefined> = process.env) {\n this.schema = schema;\n this.config = this.validate(env);\n }\n\n private validate(env: Record<string, string | undefined>): z.output<T> {\n try {\n const validated = this.schema.parse(env);\n this.logSuccess();\n return validated;\n } catch (error) {\n if (error instanceof z.ZodError) {\n this.logErrors(error);\n throw new ConfigurationError(\"Configuration validation failed\", error.issues);\n }\n throw error;\n }\n }\n\n get<K extends keyof z.output<T>>(key: K): z.output<T>[K] {\n return this.config[key];\n }\n\n getAll(): z.output<T> {\n return this.config;\n }\n\n has<K extends keyof z.output<T>>(key: K): boolean {\n return this.config[key] !== undefined;\n }\n\n getOrDefault<K extends keyof z.output<T>>(key: K, defaultValue: z.output<T>[K]): z.output<T>[K] {\n return this.config[key] ?? defaultValue;\n }\n\n isProduction(): boolean {\n return (this.config as any).NODE_ENV === \"production\";\n }\n\n isDevelopment(): boolean {\n return (this.config as any).NODE_ENV === \"development\";\n }\n\n isStaging(): boolean {\n return (this.config as any).NODE_ENV === \"staging\";\n }\n\n private logSuccess(): void {\n logger.info(\"✅ Configuration validated successfully\");\n }\n\n private logErrors(error: z.ZodError): void {\n logger.error(\"\\n❌ Configuration validation failed:\\n\");\n error.issues.forEach((issue) => {\n const path = issue.path.join(\".\");\n logger.error(` ❌ ${path}: ${issue.message}`);\n });\n logger.error(\"\\n💡 Fix these issues in your .env file and restart the service.\\n\");\n }\n}\n\nexport class ConfigurationError extends Error {\n constructor(message: string, public readonly validationErrors: z.ZodIssue[]) {\n super(message);\n this.name = \"ConfigurationError\";\n }\n}\n\nexport function createConfig<T extends z.ZodType>(\n schema: T,\n env?: Record<string, string | undefined>\n): ConfigValidator<T> {\n return new ConfigValidator(schema, env);\n}\n\nexport const CommonSchemas = {\n database: z.object({\n DATABASE_URL: z.url(),\n DB_POOL_MAX: z.coerce.number().default(20),\n DB_POOL_MIN: z.coerce.number().default(5),\n DB_ACQUIRE_TIMEOUT: z.coerce.number().default(30000),\n DB_IDLE_TIMEOUT: z.coerce.number().default(10000),\n }),\n\n redis: z.object({\n REDIS_URL: z.url(),\n REDIS_MAX_RETRIES: z.coerce.number().default(3),\n REDIS_RETRY_DELAY: z.coerce.number().default(1000),\n }),\n\n jwt: z.object({\n JWT_SECRET: z.string().min(32),\n JWT_EXPIRY: z.string().default(\"1h\"),\n REFRESH_TOKEN_EXPIRY: z.string().default(\"7d\"),\n JWT_ISSUER: z.string().optional(),\n JWT_AUDIENCE: z.string().optional(),\n }),\n\n googleOAuth: z.object({\n GOOGLE_CLIENT_ID: z.string().min(1),\n GOOGLE_CLIENT_SECRET: z.string().min(1),\n GOOGLE_REDIRECT_URI: z.string().url().optional(),\n }),\n\n appleOAuth: z.object({\n APPLE_TEAM_ID: z.string().min(1),\n APPLE_CLIENT_ID: z.string().min(1),\n APPLE_KEY_ID: z.string().min(1),\n APPLE_PRIVATE_KEY_PATH: z.string().min(1),\n }),\n\n serviceUrls: z.object({\n AUTH_SERVICE_URL: z.url(),\n NOTIFICATION_SERVICE_URL: z.url(),\n PROGRAM_SERVICE_URL: z.url(),\n RESOURCE_SERVICE_URL: z.url(),\n IMAGE_SERVICE_URL: z.url(),\n }),\n\n featureFlags: z.object({\n ENABLE_DISTRIBUTED_TRACING: z.coerce.boolean().default(false),\n ENABLE_RATE_LIMITING: z.coerce.boolean().default(true),\n ENABLE_REQUEST_LOGGING: z.coerce.boolean().default(true),\n }),\n\n postmark: z.object({\n POSTMARK_API_KEY: z.string().min(1, \"Postmark API key is required\"),\n POSTMARK_FROM_EMAIL: z.string().email(\"Valid from email is required\"),\n POSTMARK_REPLY_TO_EMAIL: z.string().email().optional(),\n POSTMARK_TIMEOUT_MS: z.coerce.number().positive().default(10000),\n }),\n\n pushNotification: z.object({\n // APNs Configuration (DEPRECATED - use Firebase instead)\n APNS_KEY_ID: z.string().optional(),\n APNS_TEAM_ID: z.string().optional(),\n APNS_TOPIC: z.string().optional(),\n APNS_PRIVATE_KEY: z.string().optional(),\n APNS_PRODUCTION: z\n .enum([\"true\", \"false\", \"1\", \"0\"])\n .transform((val) => val === \"true\" || val === \"1\")\n .or(z.boolean())\n .default(false)\n .optional(),\n\n // FCM Configuration (Firebase Admin SDK)\n // Note: These are now loaded from GCP Secret Manager, not environment variables\n FCM_PROJECT_ID: z.string().optional(),\n FCM_CLIENT_EMAIL: z.string().optional(),\n FCM_PRIVATE_KEY: z.string().optional(),\n }),\n};"],"names":["z","Log","logger","getInstance","extend","BaseConfigSchema","object","NODE_ENV","enum","default","PORT","coerce","number","min","max","DB_POOL_MAX","DB_POOL_MIN","REDIS_URL","url","optional","ACCESS_TOKEN_SECRET","string","ACCESS_TOKEN_EXPIRY","REFRESH_TOKEN_SECRET","REFRESH_TOKEN_EXPIRY","LOG_LEVEL","ConfigValidator","schema","config","env","process","validate","validated","parse","logSuccess","error","ZodError","logErrors","ConfigurationError","issues","get","key","getAll","has","undefined","getOrDefault","defaultValue","isProduction","isDevelopment","isStaging","info","forEach","issue","path","join","message","Error","validationErrors","name","createConfig","CommonSchemas","database","DATABASE_URL","DB_ACQUIRE_TIMEOUT","DB_IDLE_TIMEOUT","redis","REDIS_MAX_RETRIES","REDIS_RETRY_DELAY","jwt","JWT_SECRET","JWT_EXPIRY","JWT_ISSUER","JWT_AUDIENCE","googleOAuth","GOOGLE_CLIENT_ID","GOOGLE_CLIENT_SECRET","GOOGLE_REDIRECT_URI","appleOAuth","APPLE_TEAM_ID","APPLE_CLIENT_ID","APPLE_KEY_ID","APPLE_PRIVATE_KEY_PATH","serviceUrls","AUTH_SERVICE_URL","NOTIFICATION_SERVICE_URL","PROGRAM_SERVICE_URL","RESOURCE_SERVICE_URL","IMAGE_SERVICE_URL","featureFlags","ENABLE_DISTRIBUTED_TRACING","boolean","ENABLE_RATE_LIMITING","ENABLE_REQUEST_LOGGING","postmark","POSTMARK_API_KEY","POSTMARK_FROM_EMAIL","email","POSTMARK_REPLY_TO_EMAIL","POSTMARK_TIMEOUT_MS","positive","pushNotification","APNS_KEY_ID","APNS_TEAM_ID","APNS_TOPIC","APNS_PRIVATE_KEY","APNS_PRODUCTION","transform","val","or","FCM_PROJECT_ID","FCM_CLIENT_EMAIL","FCM_PRIVATE_KEY"],"mappings":"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"}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import Router from "@koa/router";
|
|
2
|
-
import { validate } from "../middlewares/ValidationMiddleware.js";
|
|
3
|
-
export class BaseController extends Router {
|
|
4
|
-
registerPost(path, handler, config) {
|
|
5
|
-
const middlewares = this.buildMiddlewareStack(handler, config, 201);
|
|
6
|
-
this.post(path, ...middlewares);
|
|
7
|
-
}
|
|
8
|
-
registerGet(path, handler, config) {
|
|
9
|
-
const middlewares = this.buildMiddlewareStack(handler, {
|
|
10
|
-
...config,
|
|
11
|
-
body: undefined
|
|
12
|
-
}, 200);
|
|
13
|
-
this.get(path, ...middlewares);
|
|
14
|
-
}
|
|
15
|
-
registerPatch(path, handler, config) {
|
|
16
|
-
const middlewares = this.buildMiddlewareStack(handler, {
|
|
17
|
-
...config,
|
|
18
|
-
query: undefined
|
|
19
|
-
}, 200);
|
|
20
|
-
this.patch(path, ...middlewares);
|
|
21
|
-
}
|
|
22
|
-
registerDelete(path, handler, config) {
|
|
23
|
-
const middlewares = this.buildMiddlewareStack(handler, {
|
|
24
|
-
...config,
|
|
25
|
-
query: undefined,
|
|
26
|
-
body: undefined
|
|
27
|
-
}, 200);
|
|
28
|
-
this.delete(path, ...middlewares);
|
|
29
|
-
}
|
|
30
|
-
registerPut(path, handler, config) {
|
|
31
|
-
const middlewares = this.buildMiddlewareStack(handler, {
|
|
32
|
-
...config,
|
|
33
|
-
query: undefined
|
|
34
|
-
}, 200);
|
|
35
|
-
this.put(path, ...middlewares);
|
|
36
|
-
}
|
|
37
|
-
buildMiddlewareStack(handler, config, defaultStatus) {
|
|
38
|
-
const middlewares = [];
|
|
39
|
-
// Add custom middlewares first
|
|
40
|
-
if (config.middlewares) {
|
|
41
|
-
middlewares.push(...config.middlewares);
|
|
42
|
-
}
|
|
43
|
-
// Add validation middleware
|
|
44
|
-
const validationConfig = {};
|
|
45
|
-
if (config.params) validationConfig.params = config.params;
|
|
46
|
-
if (config.query) validationConfig.query = config.query;
|
|
47
|
-
if (config.body) validationConfig.body = config.body;
|
|
48
|
-
if (config.response) validationConfig.response = config.response;
|
|
49
|
-
middlewares.push(validate(validationConfig));
|
|
50
|
-
// Add handler wrapper
|
|
51
|
-
middlewares.push(async (ctx)=>{
|
|
52
|
-
// Use validated data from ctx.state if available, otherwise fall back to raw data
|
|
53
|
-
const params = ctx.state.params ?? ctx.params;
|
|
54
|
-
const query = ctx.state.query ?? ctx.query;
|
|
55
|
-
const body = ctx.state.body ?? ctx.request.body;
|
|
56
|
-
const result = await handler(ctx, params, body, query);
|
|
57
|
-
ctx.status = config.status ?? defaultStatus;
|
|
58
|
-
ctx.body = result;
|
|
59
|
-
});
|
|
60
|
-
return middlewares;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
//# sourceMappingURL=BaseController.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/controllers/BaseController.ts"],"sourcesContent":["import Router from \"@koa/router\";\nimport type { Context, Middleware } from \"koa\";\nimport { z, type ZodSchema } from \"zod\";\nimport { validate } from \"../middlewares/ValidationMiddleware.js\";\n\ntype StaticHandler<TParams, TQuery, TBody, TResponse> = (\n ctx: Context,\n params: TParams,\n body: TBody,\n query: TQuery\n) => Promise<TResponse> | TResponse;\n\nexport type RouteConfig<\n TParamsSchema extends ZodSchema | undefined,\n TQuerySchema extends ZodSchema | undefined,\n TBodySchema extends ZodSchema | undefined,\n TResponseSchema extends ZodSchema\n> = {\n params?: TParamsSchema;\n query?: TQuerySchema;\n body?: TBodySchema;\n response: TResponseSchema;\n status?: number;\n middlewares?: Middleware[];\n handler: StaticHandler<\n TParamsSchema extends ZodSchema ? z.infer<TParamsSchema> : undefined,\n TQuerySchema extends ZodSchema ? z.infer<TQuerySchema> : undefined,\n TBodySchema extends ZodSchema ? z.infer<TBodySchema> : undefined,\n z.infer<TResponseSchema>\n >;\n};\n\nexport abstract class BaseController extends Router {\n protected registerPost<\n TParamsSchema extends ZodSchema | undefined = undefined,\n TQuerySchema extends ZodSchema | undefined = undefined,\n TBodySchema extends ZodSchema | undefined = undefined,\n TResponseSchema extends ZodSchema = ZodSchema\n >(\n path: string,\n handler: StaticHandler<\n TParamsSchema extends ZodSchema ? z.infer<TParamsSchema> : undefined,\n TQuerySchema extends ZodSchema ? z.infer<TQuerySchema> : undefined,\n TBodySchema extends ZodSchema ? z.infer<TBodySchema> : undefined,\n z.infer<TResponseSchema>\n >,\n config: Omit<RouteConfig<TParamsSchema, TQuerySchema, TBodySchema, TResponseSchema>, \"handler\">\n ): void {\n const middlewares = this.buildMiddlewareStack(handler, config, 201);\n this.post(path, ...middlewares);\n }\n\n protected registerGet<\n TParamsSchema extends ZodSchema | undefined = undefined,\n TQuerySchema extends ZodSchema | undefined = undefined,\n TResponseSchema extends ZodSchema = ZodSchema\n >(\n path: string,\n handler: StaticHandler<\n TParamsSchema extends ZodSchema ? z.infer<TParamsSchema> : undefined,\n TQuerySchema extends ZodSchema ? z.infer<TQuerySchema> : undefined,\n undefined,\n z.infer<TResponseSchema>\n >,\n config: Omit<\n RouteConfig<TParamsSchema, TQuerySchema, undefined, TResponseSchema>,\n \"handler\" | \"body\"\n >\n ): void {\n const middlewares = this.buildMiddlewareStack(handler, { ...config, body: undefined }, 200);\n this.get(path, ...middlewares);\n }\n\n protected registerPatch<\n TParamsSchema extends ZodSchema | undefined = undefined,\n TBodySchema extends ZodSchema | undefined = undefined,\n TResponseSchema extends ZodSchema = ZodSchema\n >(\n path: string,\n handler: StaticHandler<\n TParamsSchema extends ZodSchema ? z.infer<TParamsSchema> : undefined,\n undefined,\n TBodySchema extends ZodSchema ? z.infer<TBodySchema> : undefined,\n z.infer<TResponseSchema>\n >,\n config: Omit<\n RouteConfig<TParamsSchema, undefined, TBodySchema, TResponseSchema>,\n \"handler\" | \"query\"\n >\n ): void {\n const middlewares = this.buildMiddlewareStack(handler, { ...config, query: undefined }, 200);\n this.patch(path, ...middlewares);\n }\n\n protected registerDelete<\n TParamsSchema extends ZodSchema | undefined = undefined,\n TResponseSchema extends ZodSchema = ZodSchema\n >(\n path: string,\n handler: StaticHandler<\n TParamsSchema extends ZodSchema ? z.infer<TParamsSchema> : undefined,\n undefined,\n undefined,\n z.infer<TResponseSchema>\n >,\n config: Omit<\n RouteConfig<TParamsSchema, undefined, undefined, TResponseSchema>,\n \"handler\" | \"query\" | \"body\"\n >\n ): void {\n const middlewares = this.buildMiddlewareStack(\n handler,\n { ...config, query: undefined, body: undefined },\n 200\n );\n this.delete(path, ...middlewares);\n }\n\n protected registerPut<\n TParamsSchema extends ZodSchema | undefined = undefined,\n TBodySchema extends ZodSchema | undefined = undefined,\n TResponseSchema extends ZodSchema = ZodSchema\n >(\n path: string,\n handler: StaticHandler<\n TParamsSchema extends ZodSchema ? z.infer<TParamsSchema> : undefined,\n undefined,\n TBodySchema extends ZodSchema ? z.infer<TBodySchema> : undefined,\n z.infer<TResponseSchema>\n >,\n config: Omit<\n RouteConfig<TParamsSchema, undefined, TBodySchema, TResponseSchema>,\n \"handler\" | \"query\"\n >\n ): void {\n const middlewares = this.buildMiddlewareStack(handler, { ...config, query: undefined }, 200);\n this.put(path, ...middlewares);\n }\n\n private buildMiddlewareStack<\n TParamsSchema extends ZodSchema | undefined,\n TQuerySchema extends ZodSchema | undefined,\n TBodySchema extends ZodSchema | undefined,\n TResponseSchema extends ZodSchema\n >(\n handler: StaticHandler<any, any, any, any>,\n config: Omit<RouteConfig<TParamsSchema, TQuerySchema, TBodySchema, TResponseSchema>, \"handler\">,\n defaultStatus: number\n ): Middleware[] {\n const middlewares: Middleware[] = [];\n\n // Add custom middlewares first\n if (config.middlewares) {\n middlewares.push(...config.middlewares);\n }\n\n // Add validation middleware\n const validationConfig: Record<string, ZodSchema> = {};\n if (config.params) validationConfig.params = config.params;\n if (config.query) validationConfig.query = config.query;\n if (config.body) validationConfig.body = config.body;\n if (config.response) validationConfig.response = config.response;\n\n middlewares.push(validate(validationConfig));\n\n // Add handler wrapper\n middlewares.push(async (ctx: Context) => {\n // Use validated data from ctx.state if available, otherwise fall back to raw data\n const params = ctx.state.params ?? ctx.params;\n const query = ctx.state.query ?? ctx.query;\n const body = ctx.state.body ?? (ctx.request as any).body;\n\n const result = await handler(ctx, params, body, query);\n\n ctx.status = config.status ?? defaultStatus;\n ctx.body = result;\n });\n\n return middlewares;\n }\n}"],"names":["Router","validate","BaseController","registerPost","path","handler","config","middlewares","buildMiddlewareStack","post","registerGet","body","undefined","get","registerPatch","query","patch","registerDelete","delete","registerPut","put","defaultStatus","push","validationConfig","params","response","ctx","state","request","result","status"],"mappings":"AAAA,OAAOA,YAAY,cAAc;AAGjC,SAASC,QAAQ,QAAQ,yCAAyC;AA6BlE,OAAO,MAAeC,uBAAuBF;IACjCG,aAMRC,IAAY,EACZC,OAKC,EACDC,MAA+F,EACzF;QACN,MAAMC,cAAc,IAAI,CAACC,oBAAoB,CAACH,SAASC,QAAQ;QAC/D,IAAI,CAACG,IAAI,CAACL,SAASG;IACrB;IAEUG,YAKRN,IAAY,EACZC,OAKC,EACDC,MAGC,EACK;QACN,MAAMC,cAAc,IAAI,CAACC,oBAAoB,CAACH,SAAS;YAAE,GAAGC,MAAM;YAAEK,MAAMC;QAAU,GAAG;QACvF,IAAI,CAACC,GAAG,CAACT,SAASG;IACpB;IAEUO,cAKRV,IAAY,EACZC,OAKC,EACDC,MAGC,EACK;QACN,MAAMC,cAAc,IAAI,CAACC,oBAAoB,CAACH,SAAS;YAAE,GAAGC,MAAM;YAAES,OAAOH;QAAU,GAAG;QACxF,IAAI,CAACI,KAAK,CAACZ,SAASG;IACtB;IAEUU,eAIRb,IAAY,EACZC,OAKC,EACDC,MAGC,EACK;QACN,MAAMC,cAAc,IAAI,CAACC,oBAAoB,CAC3CH,SACA;YAAE,GAAGC,MAAM;YAAES,OAAOH;YAAWD,MAAMC;QAAU,GAC/C;QAEF,IAAI,CAACM,MAAM,CAACd,SAASG;IACvB;IAEUY,YAKRf,IAAY,EACZC,OAKC,EACDC,MAGC,EACK;QACN,MAAMC,cAAc,IAAI,CAACC,oBAAoB,CAACH,SAAS;YAAE,GAAGC,MAAM;YAAES,OAAOH;QAAU,GAAG;QACxF,IAAI,CAACQ,GAAG,CAAChB,SAASG;IACpB;IAEQC,qBAMNH,OAA0C,EAC1CC,MAA+F,EAC/Fe,aAAqB,EACP;QACd,MAAMd,cAA4B,EAAE;QAEpC,+BAA+B;QAC/B,IAAID,OAAOC,WAAW,EAAE;YACtBA,YAAYe,IAAI,IAAIhB,OAAOC,WAAW;QACxC;QAEA,4BAA4B;QAC5B,MAAMgB,mBAA8C,CAAC;QACrD,IAAIjB,OAAOkB,MAAM,EAAED,iBAAiBC,MAAM,GAAGlB,OAAOkB,MAAM;QAC1D,IAAIlB,OAAOS,KAAK,EAAEQ,iBAAiBR,KAAK,GAAGT,OAAOS,KAAK;QACvD,IAAIT,OAAOK,IAAI,EAAEY,iBAAiBZ,IAAI,GAAGL,OAAOK,IAAI;QACpD,IAAIL,OAAOmB,QAAQ,EAAEF,iBAAiBE,QAAQ,GAAGnB,OAAOmB,QAAQ;QAEhElB,YAAYe,IAAI,CAACrB,SAASsB;QAE1B,sBAAsB;QACtBhB,YAAYe,IAAI,CAAC,OAAOI;YACtB,kFAAkF;YAClF,MAAMF,SAASE,IAAIC,KAAK,CAACH,MAAM,IAAIE,IAAIF,MAAM;YAC7C,MAAMT,QAAQW,IAAIC,KAAK,CAACZ,KAAK,IAAIW,IAAIX,KAAK;YAC1C,MAAMJ,OAAOe,IAAIC,KAAK,CAAChB,IAAI,IAAI,AAACe,IAAIE,OAAO,CAASjB,IAAI;YAExD,MAAMkB,SAAS,MAAMxB,QAAQqB,KAAKF,QAAQb,MAAMI;YAEhDW,IAAII,MAAM,GAAGxB,OAAOwB,MAAM,IAAIT;YAC9BK,IAAIf,IAAI,GAAGkB;QACb;QAEA,OAAOtB;IACT;AACF"}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { DataTypes } from "sequelize";
|
|
2
|
-
export default {
|
|
3
|
-
async up (queryInterface) {
|
|
4
|
-
// Ensure uuid-ossp extension exists
|
|
5
|
-
await queryInterface.sequelize.query('CREATE EXTENSION IF NOT EXISTS "uuid-ossp";');
|
|
6
|
-
await queryInterface.createTable("UserProgressPhotos", {
|
|
7
|
-
uuid: {
|
|
8
|
-
type: DataTypes.UUID,
|
|
9
|
-
defaultValue: queryInterface.sequelize.literal("uuid_generate_v4()"),
|
|
10
|
-
allowNull: false,
|
|
11
|
-
primaryKey: true
|
|
12
|
-
},
|
|
13
|
-
userUuid: {
|
|
14
|
-
type: DataTypes.UUID,
|
|
15
|
-
allowNull: false,
|
|
16
|
-
references: {
|
|
17
|
-
model: "PersistedUsers",
|
|
18
|
-
key: "userUuid"
|
|
19
|
-
},
|
|
20
|
-
onUpdate: "CASCADE",
|
|
21
|
-
onDelete: "CASCADE"
|
|
22
|
-
},
|
|
23
|
-
firebasePath: {
|
|
24
|
-
type: DataTypes.STRING,
|
|
25
|
-
allowNull: false
|
|
26
|
-
},
|
|
27
|
-
photoDate: {
|
|
28
|
-
type: DataTypes.DATE,
|
|
29
|
-
allowNull: false
|
|
30
|
-
},
|
|
31
|
-
programId: {
|
|
32
|
-
type: DataTypes.UUID,
|
|
33
|
-
allowNull: true
|
|
34
|
-
},
|
|
35
|
-
createdAt: {
|
|
36
|
-
type: DataTypes.DATE,
|
|
37
|
-
allowNull: false,
|
|
38
|
-
defaultValue: queryInterface.sequelize.literal("CURRENT_TIMESTAMP")
|
|
39
|
-
},
|
|
40
|
-
updatedAt: {
|
|
41
|
-
type: DataTypes.DATE,
|
|
42
|
-
allowNull: false,
|
|
43
|
-
defaultValue: queryInterface.sequelize.literal("CURRENT_TIMESTAMP")
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
// Add index on userUuid for efficient querying
|
|
47
|
-
await queryInterface.addIndex("UserProgressPhotos", [
|
|
48
|
-
"userUuid"
|
|
49
|
-
]);
|
|
50
|
-
// Add index on programId for legacy support
|
|
51
|
-
await queryInterface.addIndex("UserProgressPhotos", [
|
|
52
|
-
"programId"
|
|
53
|
-
]);
|
|
54
|
-
},
|
|
55
|
-
async down (queryInterface) {
|
|
56
|
-
await queryInterface.dropTable("UserProgressPhotos");
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
//# sourceMappingURL=20260330000000-create-user-progress-photos.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/db/migrations/20260330000000-create-user-progress-photos.ts"],"sourcesContent":["import { QueryInterface, DataTypes } from \"sequelize\";\n\nexport default {\n async up(queryInterface: QueryInterface): Promise<void> {\n // Ensure uuid-ossp extension exists\n await queryInterface.sequelize.query(\n 'CREATE EXTENSION IF NOT EXISTS \"uuid-ossp\";'\n );\n\n await queryInterface.createTable(\"UserProgressPhotos\", {\n uuid: {\n type: DataTypes.UUID,\n defaultValue: queryInterface.sequelize.literal(\"uuid_generate_v4()\"),\n allowNull: false,\n primaryKey: true,\n },\n userUuid: {\n type: DataTypes.UUID,\n allowNull: false,\n references: {\n model: \"PersistedUsers\",\n key: \"userUuid\",\n },\n onUpdate: \"CASCADE\",\n onDelete: \"CASCADE\",\n },\n firebasePath: {\n type: DataTypes.STRING,\n allowNull: false,\n },\n photoDate: {\n type: DataTypes.DATE,\n allowNull: false,\n },\n programId: {\n type: DataTypes.UUID,\n allowNull: true,\n },\n createdAt: {\n type: DataTypes.DATE,\n allowNull: false,\n defaultValue: queryInterface.sequelize.literal(\"CURRENT_TIMESTAMP\"),\n },\n updatedAt: {\n type: DataTypes.DATE,\n allowNull: false,\n defaultValue: queryInterface.sequelize.literal(\"CURRENT_TIMESTAMP\"),\n },\n });\n\n // Add index on userUuid for efficient querying\n await queryInterface.addIndex(\"UserProgressPhotos\", [\"userUuid\"]);\n\n // Add index on programId for legacy support\n await queryInterface.addIndex(\"UserProgressPhotos\", [\"programId\"]);\n },\n\n async down(queryInterface: QueryInterface): Promise<void> {\n await queryInterface.dropTable(\"UserProgressPhotos\");\n },\n};\n"],"names":["DataTypes","up","queryInterface","sequelize","query","createTable","uuid","type","UUID","defaultValue","literal","allowNull","primaryKey","userUuid","references","model","key","onUpdate","onDelete","firebasePath","STRING","photoDate","DATE","programId","createdAt","updatedAt","addIndex","down","dropTable"],"mappings":"AAAA,SAAyBA,SAAS,QAAQ,YAAY;AAEtD,eAAe;IACb,MAAMC,IAAGC,cAA8B;QACrC,oCAAoC;QACpC,MAAMA,eAAeC,SAAS,CAACC,KAAK,CAClC;QAGF,MAAMF,eAAeG,WAAW,CAAC,sBAAsB;YACrDC,MAAM;gBACJC,MAAMP,UAAUQ,IAAI;gBACpBC,cAAcP,eAAeC,SAAS,CAACO,OAAO,CAAC;gBAC/CC,WAAW;gBACXC,YAAY;YACd;YACAC,UAAU;gBACRN,MAAMP,UAAUQ,IAAI;gBACpBG,WAAW;gBACXG,YAAY;oBACVC,OAAO;oBACPC,KAAK;gBACP;gBACAC,UAAU;gBACVC,UAAU;YACZ;YACAC,cAAc;gBACZZ,MAAMP,UAAUoB,MAAM;gBACtBT,WAAW;YACb;YACAU,WAAW;gBACTd,MAAMP,UAAUsB,IAAI;gBACpBX,WAAW;YACb;YACAY,WAAW;gBACThB,MAAMP,UAAUQ,IAAI;gBACpBG,WAAW;YACb;YACAa,WAAW;gBACTjB,MAAMP,UAAUsB,IAAI;gBACpBX,WAAW;gBACXF,cAAcP,eAAeC,SAAS,CAACO,OAAO,CAAC;YACjD;YACAe,WAAW;gBACTlB,MAAMP,UAAUsB,IAAI;gBACpBX,WAAW;gBACXF,cAAcP,eAAeC,SAAS,CAACO,OAAO,CAAC;YACjD;QACF;QAEA,+CAA+C;QAC/C,MAAMR,eAAewB,QAAQ,CAAC,sBAAsB;YAAC;SAAW;QAEhE,4CAA4C;QAC5C,MAAMxB,eAAewB,QAAQ,CAAC,sBAAsB;YAAC;SAAY;IACnE;IAEA,MAAMC,MAAKzB,cAA8B;QACvC,MAAMA,eAAe0B,SAAS,CAAC;IACjC;AACF,EAAE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"UserProgressPhoto.d.ts","sourceRoot":"","sources":["../../../src/lib/dbmodels/UserProgressPhoto.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,EAMN,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,qBAIa,iBAAkB,SAAQ,KAAK;IAQlC,IAAI,EAAE,MAAM,CAAC;IAQb,QAAQ,EAAE,MAAM,CAAC;IAGjB,IAAI,EAAE,aAAa,CAAC;IAOpB,YAAY,EAAE,MAAM,CAAC;IAOrB,SAAS,EAAE,IAAI,CAAC;IAOhB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACzB"}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
function _ts_decorate(decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
}
|
|
7
|
-
import { Table, Column, Model, DataType, ForeignKey, BelongsTo, Default, AllowNull } from "sequelize-typescript";
|
|
8
|
-
import { PersistedUser } from "./user/PersistedUser.js";
|
|
9
|
-
export class UserProgressPhoto extends Model {
|
|
10
|
-
}
|
|
11
|
-
_ts_decorate([
|
|
12
|
-
Default(DataType.UUIDV4),
|
|
13
|
-
Column({
|
|
14
|
-
type: DataType.UUID,
|
|
15
|
-
defaultValue: DataType.UUID,
|
|
16
|
-
allowNull: false,
|
|
17
|
-
primaryKey: true
|
|
18
|
-
})
|
|
19
|
-
], UserProgressPhoto.prototype, "uuid", void 0);
|
|
20
|
-
_ts_decorate([
|
|
21
|
-
ForeignKey(()=>PersistedUser),
|
|
22
|
-
AllowNull(false),
|
|
23
|
-
Column({
|
|
24
|
-
type: DataType.UUID,
|
|
25
|
-
allowNull: false
|
|
26
|
-
})
|
|
27
|
-
], UserProgressPhoto.prototype, "userUuid", void 0);
|
|
28
|
-
_ts_decorate([
|
|
29
|
-
BelongsTo(()=>PersistedUser)
|
|
30
|
-
], UserProgressPhoto.prototype, "user", void 0);
|
|
31
|
-
_ts_decorate([
|
|
32
|
-
AllowNull(false),
|
|
33
|
-
Column({
|
|
34
|
-
type: DataType.STRING,
|
|
35
|
-
allowNull: false
|
|
36
|
-
})
|
|
37
|
-
], UserProgressPhoto.prototype, "firebasePath", void 0);
|
|
38
|
-
_ts_decorate([
|
|
39
|
-
AllowNull(false),
|
|
40
|
-
Column({
|
|
41
|
-
type: DataType.DATE,
|
|
42
|
-
allowNull: false
|
|
43
|
-
})
|
|
44
|
-
], UserProgressPhoto.prototype, "photoDate", void 0);
|
|
45
|
-
_ts_decorate([
|
|
46
|
-
AllowNull(true),
|
|
47
|
-
Column({
|
|
48
|
-
type: DataType.UUID,
|
|
49
|
-
allowNull: true
|
|
50
|
-
})
|
|
51
|
-
], UserProgressPhoto.prototype, "programId", void 0);
|
|
52
|
-
UserProgressPhoto = _ts_decorate([
|
|
53
|
-
Table({
|
|
54
|
-
tableName: "UserProgressPhotos",
|
|
55
|
-
timestamps: true
|
|
56
|
-
})
|
|
57
|
-
], UserProgressPhoto);
|
|
58
|
-
|
|
59
|
-
//# sourceMappingURL=UserProgressPhoto.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/dbmodels/UserProgressPhoto.ts"],"sourcesContent":["import {\n Table,\n Column,\n Model,\n DataType,\n ForeignKey,\n BelongsTo,\n Default,\n AllowNull,\n} from \"sequelize-typescript\";\nimport { PersistedUser } from \"./user/PersistedUser.js\";\n\n@Table({\n tableName: \"UserProgressPhotos\",\n timestamps: true,\n})\nexport class UserProgressPhoto extends Model {\n @Default(DataType.UUIDV4)\n @Column({\n type: DataType.UUID,\n defaultValue: DataType.UUID,\n allowNull: false,\n primaryKey: true,\n })\n declare uuid: string;\n\n @ForeignKey(() => PersistedUser)\n @AllowNull(false)\n @Column({\n type: DataType.UUID,\n allowNull: false,\n })\n declare userUuid: string;\n\n @BelongsTo(() => PersistedUser)\n declare user: PersistedUser;\n\n @AllowNull(false)\n @Column({\n type: DataType.STRING,\n allowNull: false,\n })\n declare firebasePath: string;\n\n @AllowNull(false)\n @Column({\n type: DataType.DATE,\n allowNull: false,\n })\n declare photoDate: Date;\n\n @AllowNull(true)\n @Column({\n type: DataType.UUID,\n allowNull: true,\n })\n declare programId: string | null;\n\n declare createdAt: Date;\n declare updatedAt: Date;\n}\n"],"names":["Table","Column","Model","DataType","ForeignKey","BelongsTo","Default","AllowNull","PersistedUser","UserProgressPhoto","UUIDV4","type","UUID","defaultValue","allowNull","primaryKey","STRING","DATE","tableName","timestamps"],"mappings":";;;;;;AAAA,SACEA,KAAK,EACLC,MAAM,EACNC,KAAK,EACLC,QAAQ,EACRC,UAAU,EACVC,SAAS,EACTC,OAAO,EACPC,SAAS,QACJ,uBAAuB;AAC9B,SAASC,aAAa,QAAQ,0BAA0B;AAMxD,OAAO,MAAMC,0BAA0BP;AA4CvC;;qBA3CoBQ;;QAEhBC,MAAMR,SAASS,IAAI;QACnBC,cAAcV,SAASS,IAAI;QAC3BE,WAAW;QACXC,YAAY;;;;mBAIIP;;;QAGhBG,MAAMR,SAASS,IAAI;QACnBE,WAAW;;;;kBAIIN;;;;;QAKfG,MAAMR,SAASa,MAAM;QACrBF,WAAW;;;;;;QAMXH,MAAMR,SAASc,IAAI;QACnBH,WAAW;;;;;;QAMXH,MAAMR,SAASS,IAAI;QACnBE,WAAW;;;;;QAzCbI,WAAW;QACXC,YAAY"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
function _ts_decorate(decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
}
|
|
7
|
-
import { Table, Model, Column, DataType, Default, PrimaryKey, Index, ForeignKey, BelongsTo } from "sequelize-typescript";
|
|
8
|
-
import { QuestionnaireResponse } from "./QuestionnaireResponse.js";
|
|
9
|
-
import { Question } from "./Question.js";
|
|
10
|
-
export class Answer extends Model {
|
|
11
|
-
}
|
|
12
|
-
_ts_decorate([
|
|
13
|
-
PrimaryKey,
|
|
14
|
-
Default(DataType.UUIDV4),
|
|
15
|
-
Column(DataType.UUID)
|
|
16
|
-
], Answer.prototype, "uuid", void 0);
|
|
17
|
-
_ts_decorate([
|
|
18
|
-
ForeignKey(()=>QuestionnaireResponse),
|
|
19
|
-
Index,
|
|
20
|
-
Column(DataType.UUID)
|
|
21
|
-
], Answer.prototype, "responseUuid", void 0);
|
|
22
|
-
_ts_decorate([
|
|
23
|
-
BelongsTo(()=>QuestionnaireResponse)
|
|
24
|
-
], Answer.prototype, "response", void 0);
|
|
25
|
-
_ts_decorate([
|
|
26
|
-
ForeignKey(()=>Question),
|
|
27
|
-
Index,
|
|
28
|
-
Column(DataType.UUID)
|
|
29
|
-
], Answer.prototype, "questionUuid", void 0);
|
|
30
|
-
_ts_decorate([
|
|
31
|
-
BelongsTo(()=>Question)
|
|
32
|
-
], Answer.prototype, "question", void 0);
|
|
33
|
-
_ts_decorate([
|
|
34
|
-
Column(DataType.JSONB)
|
|
35
|
-
], Answer.prototype, "value", void 0);
|
|
36
|
-
_ts_decorate([
|
|
37
|
-
Index,
|
|
38
|
-
Column(DataType.TEXT)
|
|
39
|
-
], Answer.prototype, "valueText", void 0);
|
|
40
|
-
_ts_decorate([
|
|
41
|
-
Index,
|
|
42
|
-
Column(DataType.FLOAT)
|
|
43
|
-
], Answer.prototype, "valueNumber", void 0);
|
|
44
|
-
Answer = _ts_decorate([
|
|
45
|
-
Table({
|
|
46
|
-
tableName: "Answer",
|
|
47
|
-
timestamps: true
|
|
48
|
-
})
|
|
49
|
-
], Answer);
|
|
50
|
-
|
|
51
|
-
//# sourceMappingURL=Answer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/dbmodels/coaching/Answer.ts"],"sourcesContent":["import {\n Table,\n Model,\n Column,\n DataType,\n Default,\n PrimaryKey,\n Index,\n ForeignKey,\n BelongsTo,\n} from \"sequelize-typescript\";\nimport { QuestionnaireResponse } from \"./QuestionnaireResponse.js\";\nimport { Question } from \"./Question.js\";\n\n@Table({ tableName: \"Answer\", timestamps: true })\nexport class Answer extends Model<Answer> {\n @PrimaryKey\n @Default(DataType.UUIDV4)\n @Column(DataType.UUID)\n declare uuid: string;\n\n @ForeignKey(() => QuestionnaireResponse)\n @Index\n @Column(DataType.UUID)\n declare responseUuid: string;\n\n @BelongsTo(() => QuestionnaireResponse) declare response?: QuestionnaireResponse;\n\n @ForeignKey(() => Question)\n @Index\n @Column(DataType.UUID)\n declare questionUuid: string;\n\n @BelongsTo(() => Question) declare question?: Question;\n\n @Column(DataType.JSONB) declare value: any;\n\n @Index @Column(DataType.TEXT) declare valueText?: string | null;\n @Index @Column(DataType.FLOAT) declare valueNumber?: number | null;\n}\n"],"names":["Table","Model","Column","DataType","Default","PrimaryKey","Index","ForeignKey","BelongsTo","QuestionnaireResponse","Question","Answer","UUIDV4","UUID","JSONB","TEXT","FLOAT","tableName","timestamps"],"mappings":";;;;;;AAAA,SACIA,KAAK,EACLC,KAAK,EACLC,MAAM,EACNC,QAAQ,EACRC,OAAO,EACPC,UAAU,EACVC,KAAK,EACLC,UAAU,EACVC,SAAS,QACN,uBAAuB;AAC9B,SAASC,qBAAqB,QAAQ,6BAA6B;AACnE,SAASC,QAAQ,QAAQ,gBAAgB;AAGzC,OAAO,MAAMC,eAAeV;AAwB5B;;;qBAtBsBW;oBACDC;;;mBAGCJ;;oBAEDI;;;kBAGAJ;;;mBAECC;;oBAEDG;;;kBAGAH;;;oBAEAI;;;;oBAEOC;;;;oBACAC;;;;QAxBnBC,WAAW;QAAUC,YAAY"}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
function _ts_decorate(decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
}
|
|
7
|
-
import { BelongsTo, Column, DataType, Default, ForeignKey, Model, Table, Index } from "sequelize-typescript";
|
|
8
|
-
import { PersistedUser } from "../user/PersistedUser.js";
|
|
9
|
-
export var ClientNoteType = /*#__PURE__*/ function(ClientNoteType) {
|
|
10
|
-
ClientNoteType["CLOSER"] = "CLOSER";
|
|
11
|
-
ClientNoteType["HEAD_COACH"] = "HEAD_COACH";
|
|
12
|
-
ClientNoteType["COACH"] = "COACH";
|
|
13
|
-
ClientNoteType["SYSTEM"] = "SYSTEM";
|
|
14
|
-
return ClientNoteType;
|
|
15
|
-
}({});
|
|
16
|
-
export class ClientNote extends Model {
|
|
17
|
-
toJSON() {
|
|
18
|
-
return super.toJSON();
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
_ts_decorate([
|
|
22
|
-
Default(DataType.UUIDV4),
|
|
23
|
-
Column({
|
|
24
|
-
type: DataType.UUID,
|
|
25
|
-
defaultValue: DataType.UUIDV4,
|
|
26
|
-
allowNull: false,
|
|
27
|
-
primaryKey: true
|
|
28
|
-
})
|
|
29
|
-
], ClientNote.prototype, "uuid", void 0);
|
|
30
|
-
_ts_decorate([
|
|
31
|
-
ForeignKey(()=>PersistedUser),
|
|
32
|
-
Column({
|
|
33
|
-
type: DataType.UUID,
|
|
34
|
-
allowNull: false
|
|
35
|
-
})
|
|
36
|
-
], ClientNote.prototype, "clientUuid", void 0);
|
|
37
|
-
_ts_decorate([
|
|
38
|
-
ForeignKey(()=>PersistedUser),
|
|
39
|
-
Column({
|
|
40
|
-
type: DataType.UUID,
|
|
41
|
-
allowNull: true
|
|
42
|
-
})
|
|
43
|
-
], ClientNote.prototype, "coachUuid", void 0);
|
|
44
|
-
_ts_decorate([
|
|
45
|
-
Column({
|
|
46
|
-
type: DataType.TEXT,
|
|
47
|
-
allowNull: false
|
|
48
|
-
})
|
|
49
|
-
], ClientNote.prototype, "note", void 0);
|
|
50
|
-
_ts_decorate([
|
|
51
|
-
Default("COACH"),
|
|
52
|
-
Column({
|
|
53
|
-
type: DataType.ENUM(...Object.values(ClientNoteType)),
|
|
54
|
-
allowNull: false
|
|
55
|
-
})
|
|
56
|
-
], ClientNote.prototype, "noteType", void 0);
|
|
57
|
-
_ts_decorate([
|
|
58
|
-
BelongsTo(()=>PersistedUser, {
|
|
59
|
-
foreignKey: 'coachUuid',
|
|
60
|
-
as: 'coach'
|
|
61
|
-
})
|
|
62
|
-
], ClientNote.prototype, "coach", void 0);
|
|
63
|
-
ClientNote = _ts_decorate([
|
|
64
|
-
Table({
|
|
65
|
-
timestamps: true
|
|
66
|
-
}),
|
|
67
|
-
Index([
|
|
68
|
-
'clientUuid'
|
|
69
|
-
]),
|
|
70
|
-
Index([
|
|
71
|
-
'coachUuid'
|
|
72
|
-
])
|
|
73
|
-
], ClientNote);
|
|
74
|
-
|
|
75
|
-
//# sourceMappingURL=ClientNote.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/dbmodels/coaching/ClientNote.ts"],"sourcesContent":["import { BelongsTo, Column, DataType, Default, ForeignKey, Model, Table, Index } from 'sequelize-typescript';\nimport type { Optional } from 'sequelize';\nimport { PersistedUser } from '../user/PersistedUser.js';\n\nexport enum ClientNoteType {\n\tCLOSER = 'CLOSER',\n\tHEAD_COACH = 'HEAD_COACH',\n\tCOACH = 'COACH',\n\tSYSTEM = 'SYSTEM'\n}\n\nexport interface ClientNoteAttributes {\n\tuuid: string;\n\tclientUuid: string;\n\tcoachUuid: string | null;\n\tnote: string;\n\tnoteType: ClientNoteType;\n\tcreatedAt?: Date;\n\tupdatedAt?: Date;\n}\n\nexport interface ClientNoteCreationAttributes extends Optional<ClientNoteAttributes, \"uuid\" | \"createdAt\" | \"updatedAt\" | \"noteType\" | \"coachUuid\"> {\n}\n\n@Table({timestamps: true})\n@Index(['clientUuid'])\n@Index(['coachUuid'])\nexport class ClientNote extends Model<ClientNoteAttributes, ClientNoteCreationAttributes> {\n\t@Default(DataType.UUIDV4)\n\t@Column({\n\t\ttype: DataType.UUID,\n\t\tdefaultValue: DataType.UUIDV4,\n\t\tallowNull: false,\n\t\tprimaryKey: true\n\t})\n\tdeclare uuid: string;\n\n\t@ForeignKey(() => PersistedUser)\n\t@Column({ type: DataType.UUID, allowNull: false })\n\tdeclare clientUuid: string;\n\n\t@ForeignKey(() => PersistedUser)\n\t@Column({ type: DataType.UUID, allowNull: true })\n\tdeclare coachUuid: string | null;\n\n\t@Column({ type: DataType.TEXT, allowNull: false })\n\tdeclare note: string;\n\n\t@Default(ClientNoteType.COACH)\n\t@Column({\n\t\ttype: DataType.ENUM(...Object.values(ClientNoteType)),\n\t\tallowNull: false\n\t})\n\tdeclare noteType: ClientNoteType;\n\n\t@BelongsTo(() => PersistedUser, { foreignKey: 'coachUuid', as: 'coach' })\n\tdeclare coach: PersistedUser;\n\n\tdeclare createdAt: Date;\n\tdeclare updatedAt: Date;\n\n\toverride toJSON(): ClientNoteAttributes {\n\t\treturn super.toJSON() as ClientNoteAttributes;\n\t}\n}\n"],"names":["BelongsTo","Column","DataType","Default","ForeignKey","Model","Table","Index","PersistedUser","ClientNoteType","ClientNote","toJSON","UUIDV4","type","UUID","defaultValue","allowNull","primaryKey","TEXT","ENUM","Object","values","foreignKey","as","timestamps"],"mappings":";;;;;;AAAA,SAASA,SAAS,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,UAAU,EAAEC,KAAK,EAAEC,KAAK,EAAEC,KAAK,QAAQ,uBAAuB;AAE7G,SAASC,aAAa,QAAQ,2BAA2B;AAEzD,OAAO,IAAA,AAAKC,wCAAAA;;;;;WAAAA;MAKX;AAkBD,OAAO,MAAMC,mBAAmBL;IAkCtBM,SAA+B;QACvC,OAAO,KAAK,CAACA;IACd;AACD;;qBApCmBC;;QAEjBC,MAAMX,SAASY,IAAI;QACnBC,cAAcb,SAASU,MAAM;QAC7BI,WAAW;QACXC,YAAY;;;;mBAIKT;;QACRK,MAAMX,SAASY,IAAI;QAAEE,WAAW;;;;mBAGxBR;;QACRK,MAAMX,SAASY,IAAI;QAAEE,WAAW;;;;;QAGhCH,MAAMX,SAASgB,IAAI;QAAEF,WAAW;;;;;;QAKzCH,MAAMX,SAASiB,IAAI,IAAIC,OAAOC,MAAM,CAACZ;QACrCO,WAAW;;;;kBAIKR;QAAiBc,YAAY;QAAaC,IAAI;;;;;QA/BxDC,YAAY;;;QACZ;;;QACA"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
function _ts_decorate(decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
}
|
|
7
|
-
import { Column, DataType, Default, ForeignKey, Model, Table, Index } from "sequelize-typescript";
|
|
8
|
-
import { PersistedUser } from "../user/PersistedUser.js";
|
|
9
|
-
export class ClientTag extends Model {
|
|
10
|
-
toJSON() {
|
|
11
|
-
return super.toJSON();
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
_ts_decorate([
|
|
15
|
-
Default(DataType.UUIDV4),
|
|
16
|
-
Column({
|
|
17
|
-
type: DataType.UUID,
|
|
18
|
-
defaultValue: DataType.UUIDV4,
|
|
19
|
-
allowNull: false,
|
|
20
|
-
primaryKey: true
|
|
21
|
-
})
|
|
22
|
-
], ClientTag.prototype, "uuid", void 0);
|
|
23
|
-
_ts_decorate([
|
|
24
|
-
ForeignKey(()=>PersistedUser),
|
|
25
|
-
Column({
|
|
26
|
-
type: DataType.UUID,
|
|
27
|
-
allowNull: false
|
|
28
|
-
})
|
|
29
|
-
], ClientTag.prototype, "clientUuid", void 0);
|
|
30
|
-
_ts_decorate([
|
|
31
|
-
Column({
|
|
32
|
-
type: DataType.STRING,
|
|
33
|
-
allowNull: false
|
|
34
|
-
})
|
|
35
|
-
], ClientTag.prototype, "tag", void 0);
|
|
36
|
-
ClientTag = _ts_decorate([
|
|
37
|
-
Table({
|
|
38
|
-
timestamps: true
|
|
39
|
-
}),
|
|
40
|
-
Index([
|
|
41
|
-
'clientUuid'
|
|
42
|
-
])
|
|
43
|
-
], ClientTag);
|
|
44
|
-
|
|
45
|
-
//# sourceMappingURL=ClientTag.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/dbmodels/coaching/ClientTag.ts"],"sourcesContent":["import { Column, DataType, Default, ForeignKey, Model, Table, Index } from 'sequelize-typescript';\nimport type { Optional } from 'sequelize';\nimport { PersistedUser } from '../user/PersistedUser.js';\n\nexport interface ClientTagAttributes {\n\tuuid: string;\n\tclientUuid: string;\n\ttag: string;\n\tcreatedAt?: Date;\n\tupdatedAt?: Date;\n}\n\nexport interface ClientTagCreationAttributes extends Optional<ClientTagAttributes, \"uuid\" | \"createdAt\" | \"updatedAt\"> {\n}\n\n@Table({timestamps: true})\n@Index(['clientUuid'])\nexport class ClientTag extends Model<ClientTagAttributes, ClientTagCreationAttributes> {\n\t@Default(DataType.UUIDV4)\n\t@Column({\n\t\ttype: DataType.UUID,\n\t\tdefaultValue: DataType.UUIDV4,\n\t\tallowNull: false,\n\t\tprimaryKey: true\n\t})\n\tdeclare uuid: string;\n\n\t@ForeignKey(() => PersistedUser)\n\t@Column({ type: DataType.UUID, allowNull: false })\n\tdeclare clientUuid: string;\n\n\t@Column({ type: DataType.STRING, allowNull: false })\n\tdeclare tag: string;\n\n\tdeclare createdAt: Date;\n\tdeclare updatedAt: Date;\n\n\toverride toJSON(): ClientTagAttributes {\n\t\treturn super.toJSON() as ClientTagAttributes;\n\t}\n}\n"],"names":["Column","DataType","Default","ForeignKey","Model","Table","Index","PersistedUser","ClientTag","toJSON","UUIDV4","type","UUID","defaultValue","allowNull","primaryKey","STRING","timestamps"],"mappings":";;;;;;AAAA,SAASA,MAAM,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,UAAU,EAAEC,KAAK,EAAEC,KAAK,EAAEC,KAAK,QAAQ,uBAAuB;AAElG,SAASC,aAAa,QAAQ,2BAA2B;AAezD,OAAO,MAAMC,kBAAkBJ;IAoBrBK,SAA8B;QACtC,OAAO,KAAK,CAACA;IACd;AACD;;qBAtBmBC;;QAEjBC,MAAMV,SAASW,IAAI;QACnBC,cAAcZ,SAASS,MAAM;QAC7BI,WAAW;QACXC,YAAY;;;;mBAIKR;;QACRI,MAAMV,SAASW,IAAI;QAAEE,WAAW;;;;;QAGhCH,MAAMV,SAASe,MAAM;QAAEF,WAAW;;;;;QAhBrCG,YAAY;;;QACZ"}
|