94 lines
2.1 KiB
Go
94 lines
2.1 KiB
Go
package coresvc
|
|
|
|
import (
|
|
"fmt"
|
|
"wpw-common/internal/system"
|
|
"wpw-common/pkg/gen/biz/core/structs"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func (c *CoreService) migrateDefaultData() [][]any {
|
|
mustNot := func(err error) {
|
|
if err != nil {
|
|
c.logger.Fatalw("must no error", "err", err)
|
|
}
|
|
}
|
|
|
|
// user admin
|
|
priUser1, pubUser1, err := c.getEd25519KeyPair()
|
|
mustNot(err)
|
|
|
|
var testUser []any
|
|
for i := 0; i < 100; i++ {
|
|
testUser = append(testUser, &structs.User{
|
|
Username: fmt.Sprintf("psw_user%d", i),
|
|
DisplayName: fmt.Sprintf("The User %d", i),
|
|
Roles: []*structs.Role{},
|
|
})
|
|
}
|
|
|
|
var testWp []any
|
|
for i := 0; i < 200; i++ {
|
|
testWp = append(testWp, &structs.WajibPajak{
|
|
Profile: &structs.WajibPajakProfile{
|
|
// not validated.
|
|
Npwp: fmt.Sprintf("%15d", i),
|
|
DisplayName: fmt.Sprintf("PT. Wajib Pajak %d Tbk.", i),
|
|
Address: fmt.Sprintf("Lorem Ipsum %d, Surabaya, East Java", i),
|
|
},
|
|
Owners: []*structs.User{testUser[i/2].(*structs.User)},
|
|
})
|
|
}
|
|
|
|
return [][]any{
|
|
// User
|
|
append([]any{
|
|
&structs.User{
|
|
Username: "admin",
|
|
Password: c.passwordHasher("admin512"),
|
|
DisplayName: "The Admin",
|
|
Roles: []*structs.Role{
|
|
{ID: 1, DisplayName: "admin", RoleType: structs.RoleType_SYSTEM},
|
|
{ID: 2, DisplayName: "operator", RoleType: structs.RoleType_SYSTEM},
|
|
},
|
|
|
|
PrivateKey: priUser1,
|
|
PublicKey: pubUser1,
|
|
},
|
|
}, testUser...),
|
|
// // Wajib Pajak
|
|
append([]any{
|
|
// &structs.WajibPajak{},
|
|
}, testWp...),
|
|
}
|
|
}
|
|
|
|
func (c *CoreService) migrateSchemeAndData() {
|
|
system.Default.DoOnce("core_v1_migrate", func() error {
|
|
c.logger.Info("migrate scheme and data")
|
|
err := c.db.Transaction(func(tx *gorm.DB) (err error) {
|
|
for _, migKinds := range c.migrateDefaultData() {
|
|
if len(migKinds) <= 0 {
|
|
continue
|
|
}
|
|
if err = tx.AutoMigrate(migKinds[0]); err != nil {
|
|
return
|
|
}
|
|
for _, mData := range migKinds {
|
|
if err = tx.Create(mData).Error; err != nil {
|
|
return
|
|
}
|
|
}
|
|
}
|
|
return
|
|
})
|
|
|
|
// fail immediately if the migration fails
|
|
if err != nil {
|
|
c.logger.Fatalw("failed to migrate",
|
|
"err", err)
|
|
}
|
|
return nil
|
|
})
|
|
}
|