handle ss migration, tested
This commit is contained in:
@@ -80,7 +80,7 @@ func SetRoutes() http.Handler {
|
||||
/////
|
||||
a.RegisterExtCall(gs.Adjust)
|
||||
a.RegisterExtCall(zlc.Adjust)
|
||||
a.RegisterExtCall(ssdb.Init)
|
||||
a.RegisterExtCall(ssdb.SetInstance)
|
||||
a.RegisterExtCall(lh.Populate)
|
||||
a.RegisterExtCall(validation.RegisterValidation)
|
||||
|
||||
|
||||
@@ -0,0 +1,121 @@
|
||||
package migration
|
||||
|
||||
import (
|
||||
adime "simrs-vx/internal/domain/main-entities/adime"
|
||||
ambulatory "simrs-vx/internal/domain/main-entities/ambulatory"
|
||||
appointment "simrs-vx/internal/domain/main-entities/appointment"
|
||||
counter "simrs-vx/internal/domain/main-entities/counter"
|
||||
device "simrs-vx/internal/domain/main-entities/device"
|
||||
diagnosesrc "simrs-vx/internal/domain/main-entities/diagnose-src"
|
||||
district "simrs-vx/internal/domain/main-entities/district"
|
||||
division "simrs-vx/internal/domain/main-entities/division"
|
||||
divisionposition "simrs-vx/internal/domain/main-entities/division-position"
|
||||
doctor "simrs-vx/internal/domain/main-entities/doctor"
|
||||
doctorfee "simrs-vx/internal/domain/main-entities/doctor-fee"
|
||||
emergency "simrs-vx/internal/domain/main-entities/emergency"
|
||||
employee "simrs-vx/internal/domain/main-entities/employee"
|
||||
encounter "simrs-vx/internal/domain/main-entities/encounter"
|
||||
ethnic "simrs-vx/internal/domain/main-entities/ethnic"
|
||||
infra "simrs-vx/internal/domain/main-entities/infra"
|
||||
inpatient "simrs-vx/internal/domain/main-entities/inpatient"
|
||||
installation "simrs-vx/internal/domain/main-entities/installation"
|
||||
insurancecompany "simrs-vx/internal/domain/main-entities/insurance-company"
|
||||
item "simrs-vx/internal/domain/main-entities/item"
|
||||
itemprice "simrs-vx/internal/domain/main-entities/item-price"
|
||||
laborant "simrs-vx/internal/domain/main-entities/laborant"
|
||||
language "simrs-vx/internal/domain/main-entities/language"
|
||||
material "simrs-vx/internal/domain/main-entities/material"
|
||||
mcusrc "simrs-vx/internal/domain/main-entities/mcu-src"
|
||||
mcusrccategory "simrs-vx/internal/domain/main-entities/mcu-src-category"
|
||||
medicalactionsrc "simrs-vx/internal/domain/main-entities/medical-action-src"
|
||||
medicalactionsrcitem "simrs-vx/internal/domain/main-entities/medical-action-src-item"
|
||||
medicine "simrs-vx/internal/domain/main-entities/medicine"
|
||||
medicinegroup "simrs-vx/internal/domain/main-entities/medicine-group"
|
||||
medicinemethod "simrs-vx/internal/domain/main-entities/medicine-method"
|
||||
medicinemix "simrs-vx/internal/domain/main-entities/medicine-mix"
|
||||
medicinemixitem "simrs-vx/internal/domain/main-entities/medicine-mix-item"
|
||||
nurse "simrs-vx/internal/domain/main-entities/nurse"
|
||||
nutritionist "simrs-vx/internal/domain/main-entities/nutritionist"
|
||||
patient "simrs-vx/internal/domain/main-entities/patient"
|
||||
person "simrs-vx/internal/domain/main-entities/person"
|
||||
personaddress "simrs-vx/internal/domain/main-entities/person-address"
|
||||
personcontact "simrs-vx/internal/domain/main-entities/person-contact"
|
||||
personrelative "simrs-vx/internal/domain/main-entities/person-relative"
|
||||
pharmacist "simrs-vx/internal/domain/main-entities/pharmacist"
|
||||
pharmacycompany "simrs-vx/internal/domain/main-entities/pharmacy-company"
|
||||
practiceschedule "simrs-vx/internal/domain/main-entities/practice-schedule"
|
||||
proceduresrc "simrs-vx/internal/domain/main-entities/procedure-src"
|
||||
province "simrs-vx/internal/domain/main-entities/province"
|
||||
regency "simrs-vx/internal/domain/main-entities/regency"
|
||||
room "simrs-vx/internal/domain/main-entities/room"
|
||||
sbar "simrs-vx/internal/domain/main-entities/sbar"
|
||||
soapi "simrs-vx/internal/domain/main-entities/soapi"
|
||||
specialist "simrs-vx/internal/domain/main-entities/specialist"
|
||||
specialistintern "simrs-vx/internal/domain/main-entities/specialist-intern"
|
||||
subspecialist "simrs-vx/internal/domain/main-entities/subspecialist"
|
||||
unit "simrs-vx/internal/domain/main-entities/unit"
|
||||
uom "simrs-vx/internal/domain/main-entities/uom"
|
||||
user "simrs-vx/internal/domain/main-entities/user"
|
||||
village "simrs-vx/internal/domain/main-entities/village"
|
||||
)
|
||||
|
||||
func getMainEntities() []any {
|
||||
return []any{
|
||||
&user.User{},
|
||||
&division.Division{},
|
||||
&divisionposition.DivisionPosition{},
|
||||
&installation.Installation{},
|
||||
&unit.Unit{},
|
||||
&village.Village{},
|
||||
&district.District{},
|
||||
®ency.Regency{},
|
||||
&province.Province{},
|
||||
&person.Person{},
|
||||
&personaddress.PersonAddress{},
|
||||
&personcontact.PersonContact{},
|
||||
&pharmacycompany.PharmacyCompany{},
|
||||
&diagnosesrc.DiagnoseSrc{},
|
||||
&proceduresrc.ProcedureSrc{},
|
||||
&employee.Employee{},
|
||||
&doctor.Doctor{},
|
||||
&nurse.Nurse{},
|
||||
&nutritionist.Nutritionist{},
|
||||
&pharmacist.Pharmacist{},
|
||||
&counter.Counter{},
|
||||
&practiceschedule.PracticeSchedule{},
|
||||
&uom.Uom{},
|
||||
&item.Item{},
|
||||
&itemprice.ItemPrice{},
|
||||
&infra.Infra{},
|
||||
&medicinegroup.MedicineGroup{},
|
||||
&medicinemethod.MedicineMethod{},
|
||||
&mcusrccategory.McuSrcCategory{},
|
||||
&mcusrc.McuSrc{},
|
||||
ðnic.Ethnic{},
|
||||
&insurancecompany.InsuranceCompany{},
|
||||
&medicine.Medicine{},
|
||||
&medicinemix.MedicineMix{},
|
||||
&medicinemixitem.MedicineMixItem{},
|
||||
&medicalactionsrc.MedicalActionSrc{},
|
||||
&medicalactionsrcitem.MedicalActionSrcItem{},
|
||||
&material.Material{},
|
||||
&device.Device{},
|
||||
&doctorfee.DoctorFee{},
|
||||
&language.Language{},
|
||||
&personrelative.PersonRelative{},
|
||||
&patient.Patient{},
|
||||
&appointment.Appointment{},
|
||||
&encounter.Encounter{},
|
||||
&laborant.Laborant{},
|
||||
&specialist.Specialist{},
|
||||
&subspecialist.Subspecialist{},
|
||||
&specialistintern.SpecialistIntern{},
|
||||
&room.Room{},
|
||||
&soapi.Soapi{},
|
||||
&sbar.Sbar{},
|
||||
&adime.Adime{},
|
||||
&emergency.Emergency{},
|
||||
&inpatient.Inpatient{},
|
||||
&ambulatory.Ambulatory{},
|
||||
}
|
||||
}
|
||||
@@ -5,87 +5,20 @@ import (
|
||||
"io"
|
||||
"os"
|
||||
"os/exec"
|
||||
adime "simrs-vx/internal/domain/main-entities/adime"
|
||||
ambulatory "simrs-vx/internal/domain/main-entities/ambulatory"
|
||||
appointment "simrs-vx/internal/domain/main-entities/appointment"
|
||||
counter "simrs-vx/internal/domain/main-entities/counter"
|
||||
device "simrs-vx/internal/domain/main-entities/device"
|
||||
diagnosesrc "simrs-vx/internal/domain/main-entities/diagnose-src"
|
||||
district "simrs-vx/internal/domain/main-entities/district"
|
||||
division "simrs-vx/internal/domain/main-entities/division"
|
||||
divisionposition "simrs-vx/internal/domain/main-entities/division-position"
|
||||
doctor "simrs-vx/internal/domain/main-entities/doctor"
|
||||
doctorfee "simrs-vx/internal/domain/main-entities/doctor-fee"
|
||||
emergency "simrs-vx/internal/domain/main-entities/emergency"
|
||||
employee "simrs-vx/internal/domain/main-entities/employee"
|
||||
encounter "simrs-vx/internal/domain/main-entities/encounter"
|
||||
ethnic "simrs-vx/internal/domain/main-entities/ethnic"
|
||||
infra "simrs-vx/internal/domain/main-entities/infra"
|
||||
inpatient "simrs-vx/internal/domain/main-entities/inpatient"
|
||||
installation "simrs-vx/internal/domain/main-entities/installation"
|
||||
insurancecompany "simrs-vx/internal/domain/main-entities/insurance-company"
|
||||
item "simrs-vx/internal/domain/main-entities/item"
|
||||
itemprice "simrs-vx/internal/domain/main-entities/item-price"
|
||||
laborant "simrs-vx/internal/domain/main-entities/laborant"
|
||||
language "simrs-vx/internal/domain/main-entities/language"
|
||||
material "simrs-vx/internal/domain/main-entities/material"
|
||||
mcusrc "simrs-vx/internal/domain/main-entities/mcu-src"
|
||||
mcusrccategory "simrs-vx/internal/domain/main-entities/mcu-src-category"
|
||||
medicalactionsrc "simrs-vx/internal/domain/main-entities/medical-action-src"
|
||||
medicalactionsrcitem "simrs-vx/internal/domain/main-entities/medical-action-src-item"
|
||||
medicine "simrs-vx/internal/domain/main-entities/medicine"
|
||||
medicinegroup "simrs-vx/internal/domain/main-entities/medicine-group"
|
||||
medicinemethod "simrs-vx/internal/domain/main-entities/medicine-method"
|
||||
medicinemix "simrs-vx/internal/domain/main-entities/medicine-mix"
|
||||
medicinemixitem "simrs-vx/internal/domain/main-entities/medicine-mix-item"
|
||||
nurse "simrs-vx/internal/domain/main-entities/nurse"
|
||||
nutritionist "simrs-vx/internal/domain/main-entities/nutritionist"
|
||||
patient "simrs-vx/internal/domain/main-entities/patient"
|
||||
person "simrs-vx/internal/domain/main-entities/person"
|
||||
personaddress "simrs-vx/internal/domain/main-entities/person-address"
|
||||
personcontact "simrs-vx/internal/domain/main-entities/person-contact"
|
||||
personrelative "simrs-vx/internal/domain/main-entities/person-relative"
|
||||
pharmacist "simrs-vx/internal/domain/main-entities/pharmacist"
|
||||
pharmacycompany "simrs-vx/internal/domain/main-entities/pharmacy-company"
|
||||
practiceschedule "simrs-vx/internal/domain/main-entities/practice-schedule"
|
||||
proceduresrc "simrs-vx/internal/domain/main-entities/procedure-src"
|
||||
province "simrs-vx/internal/domain/main-entities/province"
|
||||
regency "simrs-vx/internal/domain/main-entities/regency"
|
||||
room "simrs-vx/internal/domain/main-entities/room"
|
||||
sbar "simrs-vx/internal/domain/main-entities/sbar"
|
||||
soapi "simrs-vx/internal/domain/main-entities/soapi"
|
||||
specialist "simrs-vx/internal/domain/main-entities/specialist"
|
||||
specialistintern "simrs-vx/internal/domain/main-entities/specialist-intern"
|
||||
subspecialist "simrs-vx/internal/domain/main-entities/subspecialist"
|
||||
unit "simrs-vx/internal/domain/main-entities/unit"
|
||||
uom "simrs-vx/internal/domain/main-entities/uom"
|
||||
user "simrs-vx/internal/domain/main-entities/user"
|
||||
village "simrs-vx/internal/domain/main-entities/village"
|
||||
|
||||
"ariga.io/atlas-provider-gorm/gormschema"
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/schema"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
DbCfg DbConf `yaml:"dbCfg"`
|
||||
}
|
||||
|
||||
type DbConf struct {
|
||||
DSN string `yaml:"dsn"`
|
||||
MaxOpenConns int `yaml:"maxOpenConns"`
|
||||
MaxIdleConns int `yaml:"maxIdleConns"`
|
||||
MaxIdleTime int `yaml:"maxIdleTime"`
|
||||
}
|
||||
|
||||
func Loader() {
|
||||
func loader(input string) {
|
||||
gormCfg := &gorm.Config{
|
||||
NamingStrategy: schema.NamingStrategy{
|
||||
SingularTable: true,
|
||||
NoLowerCase: true,
|
||||
},
|
||||
}
|
||||
stmts, err := gormschema.New("postgres", gormschema.WithConfig(gormCfg)).Load(GetEntities()...)
|
||||
stmts, err := gormschema.New("postgres", gormschema.WithConfig(gormCfg)).Load(getEntities(input)...)
|
||||
if err != nil {
|
||||
fmt.Fprintf(os.Stderr, "failed to load gorm schema: %v\n", err)
|
||||
os.Exit(1)
|
||||
@@ -93,65 +26,14 @@ func Loader() {
|
||||
_, _ = io.WriteString(os.Stdout, stmts)
|
||||
}
|
||||
|
||||
func GetEntities() []any {
|
||||
return []any{
|
||||
&user.User{},
|
||||
&division.Division{},
|
||||
&divisionposition.DivisionPosition{},
|
||||
&installation.Installation{},
|
||||
&unit.Unit{},
|
||||
&village.Village{},
|
||||
&district.District{},
|
||||
®ency.Regency{},
|
||||
&province.Province{},
|
||||
&person.Person{},
|
||||
&personaddress.PersonAddress{},
|
||||
&personcontact.PersonContact{},
|
||||
&pharmacycompany.PharmacyCompany{},
|
||||
&diagnosesrc.DiagnoseSrc{},
|
||||
&proceduresrc.ProcedureSrc{},
|
||||
&employee.Employee{},
|
||||
&doctor.Doctor{},
|
||||
&nurse.Nurse{},
|
||||
&nutritionist.Nutritionist{},
|
||||
&pharmacist.Pharmacist{},
|
||||
&counter.Counter{},
|
||||
&practiceschedule.PracticeSchedule{},
|
||||
&uom.Uom{},
|
||||
&item.Item{},
|
||||
&itemprice.ItemPrice{},
|
||||
&infra.Infra{},
|
||||
&medicinegroup.MedicineGroup{},
|
||||
&medicinemethod.MedicineMethod{},
|
||||
&mcusrccategory.McuSrcCategory{},
|
||||
&mcusrc.McuSrc{},
|
||||
ðnic.Ethnic{},
|
||||
&insurancecompany.InsuranceCompany{},
|
||||
&medicine.Medicine{},
|
||||
&medicinemix.MedicineMix{},
|
||||
&medicinemixitem.MedicineMixItem{},
|
||||
&medicalactionsrc.MedicalActionSrc{},
|
||||
&medicalactionsrcitem.MedicalActionSrcItem{},
|
||||
&material.Material{},
|
||||
&device.Device{},
|
||||
&doctorfee.DoctorFee{},
|
||||
&language.Language{},
|
||||
&personrelative.PersonRelative{},
|
||||
&patient.Patient{},
|
||||
&appointment.Appointment{},
|
||||
&encounter.Encounter{},
|
||||
&laborant.Laborant{},
|
||||
&specialist.Specialist{},
|
||||
&subspecialist.Subspecialist{},
|
||||
&specialistintern.SpecialistIntern{},
|
||||
&room.Room{},
|
||||
&soapi.Soapi{},
|
||||
&sbar.Sbar{},
|
||||
&adime.Adime{},
|
||||
&emergency.Emergency{},
|
||||
&inpatient.Inpatient{},
|
||||
&ambulatory.Ambulatory{},
|
||||
func getEntities(input string) []any {
|
||||
switch input {
|
||||
case "main":
|
||||
return getMainEntities()
|
||||
case "satusehat":
|
||||
return getSatuSehatEntities()
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func runAtlas(args ...string) error {
|
||||
@@ -165,8 +47,8 @@ func logMsg(msg string) {
|
||||
fmt.Fprintln(os.Stderr, msg)
|
||||
}
|
||||
|
||||
func Migrate() {
|
||||
Loader()
|
||||
func Migrate(input string) {
|
||||
loader(input)
|
||||
logMsg("Running atlas migrate diff...")
|
||||
if err := runAtlas("migrate", "diff", "--env", "gorm"); err != nil {
|
||||
logMsg(fmt.Sprintf("Failed to run diff: %v", err))
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package migration
|
||||
|
||||
import (
|
||||
patient "simrs-vx/internal/domain/satusehat-entities/patient"
|
||||
)
|
||||
|
||||
func getSatuSehatEntities() []any {
|
||||
return []any{
|
||||
&patient.Patient{},
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
/* Package migration is used to migrate the database */
|
||||
package migration
|
||||
|
||||
const (
|
||||
Main = "main"
|
||||
SatuSehat = "satusehat"
|
||||
)
|
||||
Reference in New Issue
Block a user