context extended
maybe need polishing
This commit is contained in:
1 parent
684481fd2c
commit
28b5b52a8f
11 files changed
+761
-20
No files matched your search
@@ -145,6 +145,67 @@ export const fitnessProfiles = sqliteTable("fitness_profiles", {
|
||||
.$defaultFn(() => new Date()),
|
||||
});
|
||||
|
||||
export const fitnessGoals = sqliteTable("fitness_goals", {
|
||||
id: text("id").primaryKey(),
|
||||
userId: text("user_id")
|
||||
.notNull()
|
||||
.references(() => users.id, { onDelete: "cascade" }),
|
||||
fitnessProfileId: text("fitness_profile_id").references(
|
||||
() => fitnessProfiles.id,
|
||||
{ onDelete: "cascade" }
|
||||
),
|
||||
|
||||
// Goal details
|
||||
goalType: text("goal_type", {
|
||||
enum: [
|
||||
"weight_target",
|
||||
"strength_milestone",
|
||||
"endurance_target",
|
||||
"flexibility_goal",
|
||||
"habit_building",
|
||||
"custom",
|
||||
],
|
||||
}).notNull(),
|
||||
|
||||
title: text("title").notNull(),
|
||||
description: text("description"),
|
||||
|
||||
// Measurable targets
|
||||
targetValue: real("target_value"), // e.g., 70 (kg), 100 (kg bench press)
|
||||
currentValue: real("current_value"), // Current progress
|
||||
unit: text("unit"), // kg, km, reps, etc.
|
||||
|
||||
// Timeline
|
||||
startDate: integer("start_date", { mode: "timestamp" })
|
||||
.notNull()
|
||||
.$defaultFn(() => new Date()),
|
||||
targetDate: integer("target_date", { mode: "timestamp" }),
|
||||
completedDate: integer("completed_date", { mode: "timestamp" }),
|
||||
|
||||
// Status tracking
|
||||
status: text("status", {
|
||||
enum: ["active", "completed", "abandoned", "paused"],
|
||||
})
|
||||
.notNull()
|
||||
.default("active"),
|
||||
|
||||
progress: real("progress").default(0), // 0-100 percentage
|
||||
|
||||
// Metadata
|
||||
priority: text("priority", {
|
||||
enum: ["low", "medium", "high"],
|
||||
}).default("medium"),
|
||||
|
||||
notes: text("notes"),
|
||||
|
||||
createdAt: integer("created_at", { mode: "timestamp" })
|
||||
.notNull()
|
||||
.$defaultFn(() => new Date()),
|
||||
updatedAt: integer("updated_at", { mode: "timestamp" })
|
||||
.notNull()
|
||||
.$defaultFn(() => new Date()),
|
||||
});
|
||||
|
||||
export const recommendations = sqliteTable("recommendations", {
|
||||
id: text("id").primaryKey(),
|
||||
userId: text("user_id")
|
||||
@@ -186,5 +247,8 @@ export type Notification = typeof notifications.$inferSelect;
|
||||
export type NewNotification = typeof notifications.$inferInsert;
|
||||
export type FitnessProfile = typeof fitnessProfiles.$inferSelect;
|
||||
export type NewFitnessProfile = typeof fitnessProfiles.$inferInsert;
|
||||
export type FitnessGoal = typeof fitnessGoals.$inferSelect;
|
||||
export type NewFitnessGoal = typeof fitnessGoals.$inferInsert;
|
||||
export type Recommendation = typeof recommendations.$inferSelect;
|
||||
export type NewRecommendation = typeof recommendations.$inferInsert;
|
||||
|
||||
Reference in new issue
Block a user