package impl import ( "health-ai/internal/database" "health-ai/internal/model" ) type HealthRepository struct{} func NewHealthRepository() *HealthRepository { return &HealthRepository{} } // ================= HealthProfile ================= func (r *HealthRepository) CreateProfile(profile *model.HealthProfile) error { return database.DB.Create(profile).Error } func (r *HealthRepository) GetProfileByUserID(userID uint) (*model.HealthProfile, error) { var profile model.HealthProfile err := database.DB.Where("user_id = ?", userID).First(&profile).Error return &profile, err } func (r *HealthRepository) UpdateProfile(profile *model.HealthProfile) error { return database.DB.Save(profile).Error } // ================= LifestyleInfo ================= func (r *HealthRepository) CreateLifestyle(lifestyle *model.LifestyleInfo) error { return database.DB.Create(lifestyle).Error } func (r *HealthRepository) GetLifestyleByUserID(userID uint) (*model.LifestyleInfo, error) { var lifestyle model.LifestyleInfo err := database.DB.Where("user_id = ?", userID).First(&lifestyle).Error return &lifestyle, err } func (r *HealthRepository) UpdateLifestyle(lifestyle *model.LifestyleInfo) error { return database.DB.Save(lifestyle).Error } // ================= MedicalHistory ================= func (r *HealthRepository) CreateMedicalHistory(history *model.MedicalHistory) error { return database.DB.Create(history).Error } func (r *HealthRepository) GetMedicalHistories(profileID uint) ([]model.MedicalHistory, error) { var histories []model.MedicalHistory err := database.DB.Where("health_profile_id = ?", profileID).Find(&histories).Error return histories, err } func (r *HealthRepository) DeleteMedicalHistory(id uint) error { return database.DB.Delete(&model.MedicalHistory{}, id).Error } func (r *HealthRepository) BatchCreateMedicalHistories(histories []model.MedicalHistory) error { if len(histories) == 0 { return nil } return database.DB.Create(&histories).Error } // ================= FamilyHistory ================= func (r *HealthRepository) CreateFamilyHistory(history *model.FamilyHistory) error { return database.DB.Create(history).Error } func (r *HealthRepository) GetFamilyHistories(profileID uint) ([]model.FamilyHistory, error) { var histories []model.FamilyHistory err := database.DB.Where("health_profile_id = ?", profileID).Find(&histories).Error return histories, err } func (r *HealthRepository) DeleteFamilyHistory(id uint) error { return database.DB.Delete(&model.FamilyHistory{}, id).Error } func (r *HealthRepository) BatchCreateFamilyHistories(histories []model.FamilyHistory) error { if len(histories) == 0 { return nil } return database.DB.Create(&histories).Error } // ================= AllergyRecord ================= func (r *HealthRepository) CreateAllergyRecord(record *model.AllergyRecord) error { return database.DB.Create(record).Error } func (r *HealthRepository) GetAllergyRecords(profileID uint) ([]model.AllergyRecord, error) { var records []model.AllergyRecord err := database.DB.Where("health_profile_id = ?", profileID).Find(&records).Error return records, err } func (r *HealthRepository) DeleteAllergyRecord(id uint) error { return database.DB.Delete(&model.AllergyRecord{}, id).Error } func (r *HealthRepository) BatchCreateAllergyRecords(records []model.AllergyRecord) error { if len(records) == 0 { return nil } return database.DB.Create(&records).Error } // ================= 清除旧数据方法 ================= func (r *HealthRepository) ClearMedicalHistories(profileID uint) error { return database.DB.Where("health_profile_id = ?", profileID).Delete(&model.MedicalHistory{}).Error } func (r *HealthRepository) ClearFamilyHistories(profileID uint) error { return database.DB.Where("health_profile_id = ?", profileID).Delete(&model.FamilyHistory{}).Error } func (r *HealthRepository) ClearAllergyRecords(profileID uint) error { return database.DB.Where("health_profile_id = ?", profileID).Delete(&model.AllergyRecord{}).Error }