added info to meal
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user