handle ss migration, tested

This commit is contained in:
dpurbosakti
2025-09-11 13:02:57 +07:00
parent 2ed11fe5e5
commit 7ab845d79d
28 changed files with 388 additions and 176 deletions
+22
View File
@@ -0,0 +1,22 @@
data "external_schema" "gorm" {
program = [
"go",
"run",
"-mod=mod",
".",
]
}
env "gorm" {
src = data.external_schema.gorm.url
dev = "postgres://moko:password@localhost:5432/simrs_vx3?sslmode=disable"
migration {
dir = "file://migrations"
}
url = "postgres://moko:password@localhost:5432/simrs_vx1?sslmode=disable"
format {
migrate {
diff = "{{ sql . \" \" }}"
}
}
}
@@ -5,5 +5,5 @@ import (
)
func main() {
m.Migrate()
m.Migrate(m.Main)
}
@@ -1,8 +1,8 @@
h1:dw8c/C5xz/Do+p93EVuqfaZWYja1GO1VsbM7vuCJYGo=
h1:BLtMDgAdnqZbCj3HUbiTlyYtA87C4LcP/uquCbM6GSE=
20250904105930.sql h1:MEM6blCgke9DzWQSTnLzasbPIrcHssNNrJqZpSkEo6k=
20250904141448.sql h1:J8cmYNk4ZrG9fhfbi2Z1IWz7YkfvhFqTzrLFo58BPY0=
20250908062237.sql h1:Pu23yEW/aKkwozHoOuROvHS/GK4ngARJGdO7FB7HZuI=
20250908062323.sql h1:oXl6Z143tOpIl4EfP4B8JNU8LrMvVmHEtCgAfiB4gs8=
20250908073811.sql h1:m2aNXfnGxnLq1+rVWrh4f60q7fhyhV3gEwNu/OIqQlE=
20250908073839.sql h1:cPk54xjLdMs26uY8ZHjNWLuyfAMzV7Zb0/9oJQrsw04=
20250910055902.sql h1:fnLqf63sb0R02rzoj1Gnncp32NW/bUcBAMLyV4qF968=
20250910055902.sql h1:5xwjAV6QbtZT9empTJKfhyAjdknbHzb15B0Ku5dzqtQ=
+22
View File
@@ -0,0 +1,22 @@
data "external_schema" "gorm" {
program = [
"go",
"run",
"-mod=mod",
".",
]
}
env "gorm" {
src = data.external_schema.gorm.url
dev = "postgres://moko:password@localhost:5432/satusehat_diff?sslmode=disable"
migration {
dir = "file://migrations"
}
url = "postgres://moko:password@localhost:5432/satusehat_main?sslmode=disable"
format {
migrate {
diff = "{{ sql . \" \" }}"
}
}
}
+22
View File
@@ -0,0 +1,22 @@
data "external_schema" "gorm" {
program = [
"go",
"run",
"-mod=mod",
".",
]
}
env "gorm" {
src = data.external_schema.gorm.url
dev = "" // dsn db to check the diff
migration {
dir = "file://migrations"
}
url = "" // dsn db to apply
format {
migrate {
diff = "{{ sql . \" \" }}"
}
}
}
@@ -0,0 +1,47 @@
appCfg:
fullName: BPJS Bridge
codeName: simrs-vx
version: 0.1.0
env: development
lang: en
httpCfg:
host:
port:
dbCfg:
dsn:
maxOpenConns: 5
maxIdleConns: 5
maxIdleTime: 100
loggerCfg:
hideTime:
hideLevel:
msCfg:
dsn:
langCfg:
active:
path:
fileName:
minioCfg:
endpoint:
region:
accessKey:
secretKey:
useSsl:
bucketName:
- patient
corsCfg:
allowedOrigin:
allowedMethod:
satuSehatCfg:
host: localhsot:8200
bpjsCfg:
host: localhsot:8200
+9
View File
@@ -0,0 +1,9 @@
package main
import (
m "simrs-vx/internal/interface/migration"
)
func main() {
m.Migrate(m.SatuSehat)
}
@@ -0,0 +1,9 @@
-- Create "Patient" table
CREATE TABLE "public"."Patient" (
"ResourceType" text NULL,
"Active" boolean NULL,
"Gender" text NULL,
"BirthDate" text NULL,
"DeceasedBool" boolean NULL,
"MultipleBirthInteger" bigint NULL
);
@@ -0,0 +1,2 @@
h1:dPpFMJ+ZSlHizKRHShYcjJZJNZXi4UuZXZUHME8zPb4=
20250911060006.sql h1:G3YiyY/tCTZijQWqyvyDAaMVCFkhh/gD3v/1gz/eBb8=
+3 -3
View File
@@ -8,16 +8,16 @@ require (
ariga.io/atlas-provider-gorm v0.5.6
github.com/golang-jwt/jwt v3.2.2+incompatible
github.com/google/uuid v1.6.0
github.com/karincake/apem v0.0.16-h
github.com/karincake/apem v0.0.17
github.com/karincake/dodol v0.0.1
github.com/karincake/getuk v0.1.0
github.com/karincake/hongkue v0.0.4
github.com/karincake/lepet v0.0.1
github.com/karincake/risoles v0.0.3
github.com/karincake/semprit v0.0.3
github.com/karincake/serabi v0.0.14
github.com/rs/zerolog v1.33.0
golang.org/x/crypto v0.41.0
gorm.io/driver/postgres v1.5.11
gorm.io/gorm v1.25.12
)
@@ -34,7 +34,6 @@ require (
github.com/jackc/puddle/v2 v2.2.1 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect
github.com/karincake/serabi v0.0.14 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.19 // indirect
github.com/mattn/go-sqlite3 v1.14.28 // indirect
@@ -46,6 +45,7 @@ require (
golang.org/x/text v0.28.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
gorm.io/driver/mysql v1.5.7 // indirect
gorm.io/driver/postgres v1.5.11 // indirect
gorm.io/driver/sqlite v1.5.7 // indirect
gorm.io/driver/sqlserver v1.5.4 // indirect
)
+2 -2
View File
@@ -69,8 +69,8 @@ github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/karincake/apem v0.0.16-h h1:rfO444oDG4cWFf0PjUshA+0U8KI/u067Va273WeJhpU=
github.com/karincake/apem v0.0.16-h/go.mod h1:cQP2sJfDrLRIiwWoaLWw/z8uAya+DWu/FpmYeinMQXM=
github.com/karincake/apem v0.0.17 h1:y3WXCr9GWLFFFH4Qyq/VWlWWpijHh5zpTc3Lm96twa4=
github.com/karincake/apem v0.0.17/go.mod h1:cQP2sJfDrLRIiwWoaLWw/z8uAya+DWu/FpmYeinMQXM=
github.com/karincake/dodol v0.0.1 h1:jUXmJh1r0Ei4fmHPZ6IUkoplW/V9d27L63JEl6zudL0=
github.com/karincake/dodol v0.0.1/go.mod h1:2f1NcvkvY0J3GMUkwILNDYVvRUpz0W3lpPp/Ha/Ld24=
github.com/karincake/getuk v0.1.0 h1:jcIsASrr0UDE528GN7Ua6n9UFyRgUypsWh8Or8wzCO0=
@@ -0,0 +1,92 @@
package patient
type Patient struct {
ResourceType string `json:"resourceType"`
// Meta Meta `json:"meta"`
// Identifier []Identifier `json:"identifier"`
Active bool `json:"active"`
// Name []HumanName `json:"name"`
// Telecom []ContactPoint `json:"telecom"`
Gender string `json:"gender"`
BirthDate string `json:"birthDate"`
DeceasedBool bool `json:"deceasedBoolean"`
// Address []Address `json:"address"`
// MaritalStatus MaritalStatus `json:"maritalStatus"`
MultipleBirthInteger int `json:"multipleBirthInteger"`
// Contact []Contact `json:"contact"`
// Communication []Communication `json:"communication"`
// Extension []Extension `json:"extension"`
}
type Meta struct {
Profile []string `json:"profile"`
}
type Identifier struct {
Use string `json:"use"`
System string `json:"system"`
Value string `json:"value"`
}
type HumanName struct {
Use string `json:"use"`
Text string `json:"text"`
}
type ContactPoint struct {
System string `json:"system"`
Value string `json:"value"`
Use string `json:"use"`
}
type Address struct {
Use string `json:"use"`
Line []string `json:"line"`
City string `json:"city"`
PostalCode string `json:"postalCode"`
Country string `json:"country"`
Extension []Extension `json:"extension"`
}
type Extension struct {
URL string `json:"url"`
Extension []SubExtension `json:"extension,omitempty"`
ValueCode string `json:"valueCode,omitempty"`
ValueAddress *Address `json:"valueAddress,omitempty"`
}
type SubExtension struct {
URL string `json:"url"`
ValueCode string `json:"valueCode"`
}
type MaritalStatus struct {
Coding []Coding `json:"coding"`
Text string `json:"text"`
}
type Coding struct {
System string `json:"system"`
Code string `json:"code"`
Display string `json:"display,omitempty"`
}
type Contact struct {
Relationship []Relationship `json:"relationship"`
Name HumanName `json:"name"`
Telecom []ContactPoint `json:"telecom"`
}
type Relationship struct {
Coding []Coding `json:"coding"`
}
type Communication struct {
Language Language `json:"language"`
Preferred bool `json:"preferred"`
}
type Language struct {
Coding []Coding `json:"coding"`
Text string `json:"text"`
}
+3 -29
View File
@@ -1,36 +1,10 @@
package ssdb
import (
"log"
a "github.com/karincake/apem"
lo "github.com/karincake/apem/loggero"
"gorm.io/driver/postgres"
"gorm.io/gorm"
"gorm.io/gorm/schema"
dg "github.com/karincake/apem/db-gorm-pg"
)
func Init() {
SetConfig()
NewInstance()
}
func SetInstance() {
func SetConfig() {
a.ParseSingleCfg(&Cfg)
}
func NewInstance() {
// create database connection
db, err := gorm.Open(postgres.Open(Cfg.Dsn), &gorm.Config{
NamingStrategy: schema.NamingStrategy{
SingularTable: true,
NoLowerCase: true,
},
})
if err != nil {
log.Fatal(err)
}
SSDb = db
lo.I.Println("Instantiation for satu-sehat database-connetion using db-gorm-pg, status: DONE!!")
I = dg.IS["satusehat"]
}
+1 -9
View File
@@ -2,12 +2,4 @@ package ssdb
import "gorm.io/gorm"
type SsDbCfg struct {
Dsn string
MaxOpenConns int `yaml:"maxOpenConns"`
MaxIdleConns int `yaml:"maxIdleConns"`
MaxIdleTime int `yaml:"maxIdleTime"`
}
var Cfg SsDbCfg = SsDbCfg{}
var SSDb *gorm.DB
var I *gorm.DB
@@ -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{},
&regency.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{},
&ethnic.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{},
}
}
+11 -129
View File
@@ -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{},
&regency.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{},
&ethnic.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{},
}
}
+7
View File
@@ -0,0 +1,7 @@
/* Package migration is used to migrate the database */
package migration
const (
Main = "main"
SatuSehat = "satusehat"
)