added info to meal

This commit is contained in:
2025-10-25 16:06:42 +02:00
parent 4db5084bc6
commit 38db9c242b
5 changed files with 237 additions and 165 deletions

View File

@@ -29,6 +29,11 @@ func InitDB(dbPath string) error {
return fmt.Errorf("failed to create tables: %w", err)
}
// Run migrations
if err = runMigrations(); err != nil {
return fmt.Errorf("failed to run migrations: %w", err)
}
return nil
}
@@ -73,6 +78,9 @@ func createTables() error {
name TEXT NOT NULL,
description TEXT,
meal_type TEXT NOT NULL DEFAULT 'lunch',
instructions TEXT,
prep_time INTEGER DEFAULT 0,
image_url TEXT,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
@@ -105,6 +113,33 @@ func createTables() error {
return err
}
func runMigrations() error {
// Check if instructions column exists
var count int
err := DB.QueryRow("SELECT COUNT(*) FROM pragma_table_info('meals') WHERE name='instructions'").Scan(&count)
if err != nil {
return err
}
// Add new meal columns if they don't exist
if count == 0 {
_, err = DB.Exec("ALTER TABLE meals ADD COLUMN instructions TEXT")
if err != nil {
return err
}
_, err = DB.Exec("ALTER TABLE meals ADD COLUMN prep_time INTEGER DEFAULT 0")
if err != nil {
return err
}
_, err = DB.Exec("ALTER TABLE meals ADD COLUMN image_url TEXT")
if err != nil {
return err
}
}
return nil
}
// User operations
func CreateUser(email, passwordHash string) (int64, error) {
@@ -220,7 +255,7 @@ func DeleteIngredient(userID, ingredientID int) error {
func GetAllMeals(userID int) ([]models.Meal, error) {
rows, err := DB.Query(
"SELECT id, user_id, name, description, meal_type FROM meals WHERE user_id = ? ORDER BY name",
"SELECT id, user_id, name, description, meal_type, instructions, prep_time, image_url FROM meals WHERE user_id = ? ORDER BY name",
userID,
)
if err != nil {
@@ -231,7 +266,7 @@ func GetAllMeals(userID int) ([]models.Meal, error) {
var meals []models.Meal
for rows.Next() {
var meal models.Meal
if err := rows.Scan(&meal.ID, &meal.UserID, &meal.Name, &meal.Description, &meal.MealType); err != nil {
if err := rows.Scan(&meal.ID, &meal.UserID, &meal.Name, &meal.Description, &meal.MealType, &meal.Instructions, &meal.PrepTime, &meal.ImageURL); err != nil {
return nil, err
}
meals = append(meals, meal)
@@ -242,19 +277,19 @@ func GetAllMeals(userID int) ([]models.Meal, error) {
func GetMealByID(userID, mealID int) (*models.Meal, error) {
var meal models.Meal
err := DB.QueryRow(
"SELECT id, user_id, name, description, meal_type FROM meals WHERE id = ? AND user_id = ?",
"SELECT id, user_id, name, description, meal_type, instructions, prep_time, image_url FROM meals WHERE id = ? AND user_id = ?",
mealID, userID,
).Scan(&meal.ID, &meal.UserID, &meal.Name, &meal.Description, &meal.MealType)
).Scan(&meal.ID, &meal.UserID, &meal.Name, &meal.Description, &meal.MealType, &meal.Instructions, &meal.PrepTime, &meal.ImageURL)
if err != nil {
return nil, err
}
return &meal, nil
}
func AddMeal(userID int, name, description, mealType string) (int64, error) {
func AddMeal(userID int, name, description, mealType, instructions, imageURL string, prepTime int) (int64, error) {
result, err := DB.Exec(
"INSERT INTO meals (user_id, name, description, meal_type) VALUES (?, ?, ?, ?)",
userID, name, description, mealType,
"INSERT INTO meals (user_id, name, description, meal_type, instructions, prep_time, image_url) VALUES (?, ?, ?, ?, ?, ?, ?)",
userID, name, description, mealType, instructions, prepTime, imageURL,
)
if err != nil {
return 0, err