shao 2 päivää sitten
vanhempi
commit
b8bf49433e
3 muutettua tiedostoa jossa 43 lisäystä ja 39 poistoa
  1. 28 0
      models/migrate.go
  2. 3 37
      models/setup.go
  3. 12 2
      service/protocol.go

+ 28 - 0
models/initdata.go → models/migrate.go

@@ -51,3 +51,31 @@ func initTable(sqlFilePath string, db *gorm.DB) error {
 	slog.Info("Processed SQL file", "file", sqlFilePath)
 	return nil
 }
+
+func migrate(db *gorm.DB) {
+	panicHelper(db.AutoMigrate(&PatientType{}))
+	var count int64
+	db.Model(&BodyPart{}).Count(&count)
+	if count == 0 {
+		panicHelper(initTable("p_patient_type_202505291630.sql", db))
+	}
+	panicHelper(db.AutoMigrate(&BodyPart{}))
+	db.Model(&BodyPart{}).Count(&count)
+	if count == 0 {
+		panicHelper(initTable("p_body_part_202505291606.sql", db))
+	}
+	panicHelper(db.AutoMigrate(&Procedure{}))
+	db.Model(&Procedure{}).Count(&count)
+	if count == 0 {
+		panicHelper(initTable("p_procedure_human_202506031132.sql", db))
+		panicHelper(initTable("p_procedure_vet_202506031132.sql", db))
+	}
+	panicHelper(db.AutoMigrate(&View{}))
+	db.Model(&View{}).Count(&count)
+	if count == 0 {
+		panicHelper(initTable("p_view_human_202506051008.sql", db))
+		panicHelper(initTable("p_procedure_views_human_202506051009.sql", db))
+		panicHelper(initTable("p_view_vet_202506051008.sql", db))
+		panicHelper(initTable("p_procedure_views_vet_202506051009.sql", db))
+	}
+}

+ 3 - 37
models/setup.go

@@ -26,34 +26,6 @@ func panicHelper(err error) {
 	}
 }
 
-func migrate(db *gorm.DB) {
-	panicHelper(db.AutoMigrate(&PatientType{}))
-	var count int64
-	db.Model(&BodyPart{}).Count(&count)
-	if count == 0 {
-		panicHelper(initTable("p_patient_type_202505291630.sql", db))
-	}
-	panicHelper(db.AutoMigrate(&BodyPart{}))
-	db.Model(&BodyPart{}).Count(&count)
-	if count == 0 {
-		panicHelper(initTable("p_body_part_202505291606.sql", db))
-	}
-	panicHelper(db.AutoMigrate(&Procedure{}))
-	db.Model(&Procedure{}).Count(&count)
-	if count == 0 {
-		panicHelper(initTable("p_procedure_human_202506031132.sql", db))
-		panicHelper(initTable("p_procedure_vet_202506031132.sql", db))
-	}
-	panicHelper(db.AutoMigrate(&View{}))
-	db.Model(&View{}).Count(&count)
-	if count == 0 {
-		panicHelper(initTable("p_view_human_202506051008.sql", db))
-		panicHelper(initTable("p_procedure_views_human_202506051009.sql", db))
-		panicHelper(initTable("p_view_vet_202506051008.sql", db))
-		panicHelper(initTable("p_procedure_views_vet_202506051009.sql", db))
-	}
-}
-
 func SetupGorm(m bool) {
 	slog.Info("setup gorm")
 
@@ -66,16 +38,12 @@ func SetupGorm(m bool) {
 	)
 	if m {
 		db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
-		if err != nil {
-			panic(err)
-		}
+		panicHelper(err)
 
 		migrate(db)
 
 		sqlDB, err := db.DB()
-		if err != nil {
-			panic(err)
-		}
+		panicHelper(err)
 		panicHelper(sqlDB.Close())
 	}
 	if common.LoggerConfig.LogLevel == "debug" {
@@ -85,8 +53,6 @@ func SetupGorm(m bool) {
 	} else {
 		DB, err = gorm.Open(postgres.Open(dsn), &gorm.Config{})
 	}
-	if err != nil {
-		panic(err)
-	}
+	panicHelper(err)
 	slog.Info("setup gorm ok")
 }

+ 12 - 2
service/protocol.go

@@ -3,6 +3,8 @@ package service
 import (
 	"context"
 	"encoding/json"
+	"errors"
+	"gorm.io/gorm"
 	"log/slog"
 )
 
@@ -129,23 +131,31 @@ func view2pb(view models.View) *pb.View {
 }
 
 func (s *ProtocolServer) GetView(ctx context.Context, in *pb.ViewRequest) (*pb.ViewReply, error) {
+	product, _, _ := common.GetHeader(ctx)
 	procedure := models.Procedure{}
 	res := pb.ViewReply{}
 	if in.GetProcedureId() == "" {
 		err := models.DB.Model(&models.View{}).Scopes(
 			models.String("patient_type = ?", in.GetPatientType()),
 			models.String("body_part_id = ?", in.GetBodyPartId()),
+			models.String("product = ?", product.ToString()),
 			models.Bool("is_enabled = ?", in.IsEnabled),
 			models.Bool("is_pre_install = ?", in.IsPreInstall),
-		).Order("sort, id").Find(&procedure.Views).Error
+		).Order("sort").Find(&procedure.Views).Error
 		if err != nil {
 			return nil, status.Errorf(codes.Internal, "procedure find err %v", err)
 		}
 	} else {
 		err := models.DB.Model(&models.Procedure{}).Preload("Views").Scopes(
 			models.String("procedure_id = ?", in.GetProcedureId()),
-		).Order("sort, id").First(&procedure).Error
+			models.String("product = ?", product.ToString()),
+			models.Bool("is_enabled = ?", in.IsEnabled),
+			models.Bool("is_pre_install = ?", in.IsPreInstall),
+		).Order("sort").First(&procedure).Error
 		if err != nil {
+			if errors.Is(err, gorm.ErrRecordNotFound) {
+				return nil, status.Errorf(codes.NotFound, "procedure %s not found", in.GetProcedureId())
+			}
 			return nil, status.Errorf(codes.Internal, "procedure find err %v", err)
 		}
 	}