initiate seeder : menu seeder
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"antrian-operasi/internal/config"
|
||||
"antrian-operasi/internal/database"
|
||||
utils "antrian-operasi/internal/utils/query"
|
||||
"context"
|
||||
"log"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
const DB_ANTRIAN_OPERASI = "db_role_access"
|
||||
const TBL_ROLE_PAGE = "role_pages"
|
||||
|
||||
var dbService database.Service
|
||||
|
||||
func main() {
|
||||
cfg := config.LoadConfig()
|
||||
dbService = database.New(cfg)
|
||||
|
||||
ctx := context.Background()
|
||||
err := seedRolePages(ctx, dbService)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
defer dbService.Close()
|
||||
}
|
||||
|
||||
func seedRolePages(c context.Context, db database.Service) error {
|
||||
dbconn, err := db.GetSQLXDB(DB_ANTRIAN_OPERASI)
|
||||
if err != nil {
|
||||
log.Fatal("unable to connect database antrian operasi")
|
||||
return err
|
||||
}
|
||||
|
||||
qb := utils.NewQueryBuilder(utils.DBTypePostgreSQL).SetAllowedColumns([]string{
|
||||
"id", "name", "icon", "url", "level", "sort", "parent",
|
||||
}).SetSecurityOptions(false, 100)
|
||||
|
||||
idParentDashboard := uuid.New().String()
|
||||
idParentAntrean := uuid.New().String()
|
||||
idParentSettings := uuid.New().String()
|
||||
|
||||
insertPageQuery := utils.InsertBulkData{
|
||||
Columns: []string{
|
||||
"id", "name", "icon", "url", "level", "sort", "parent",
|
||||
},
|
||||
Values: [][]interface{}{
|
||||
{idParentDashboard, "Dashboard", nil, nil, 1, 1, nil},
|
||||
{uuid.New().String(), "Dashboard", "widget-add-line-duotone", "/dashboard", 2, 1, idParentDashboard},
|
||||
{idParentAntrean, "Antrean", nil, nil, 1, 2, nil},
|
||||
{uuid.New().String(), "Semua", "list-check-line-duotone", "/antrean/all", 2, 1, idParentAntrean},
|
||||
{uuid.New().String(), "Kategori", "layers-minimalistic-line-duotone", "/antrean/list-kategori", 2, 2, idParentAntrean},
|
||||
{uuid.New().String(), "Spesialis", "users-group-rounded-line-duotone", "/antrean/list-spesialis", 2, 3, idParentAntrean},
|
||||
{idParentSettings, "Pengaturan", nil, nil, 1, 3, nil},
|
||||
{uuid.New().String(), "Hak Akses", "shield-user-line-duotone", "/setting/hak-akses", 2, 1, idParentSettings},
|
||||
{uuid.New().String(), "User", "user-id-line-duotone", "/setting/user", 2, 2, idParentSettings},
|
||||
},
|
||||
}
|
||||
|
||||
sql, args, err := qb.BuildBulkInsertQuery(TBL_ROLE_PAGE, insertPageQuery)
|
||||
if err != nil {
|
||||
log.Fatalf("fail creating query seed role pages, %v", err)
|
||||
return err
|
||||
}
|
||||
|
||||
log.Println(sql, args)
|
||||
|
||||
tx, err := dbconn.BeginTx(c, nil)
|
||||
if err != nil {
|
||||
log.Fatalf("fail starting transaction seed role pages, %v", err)
|
||||
return err
|
||||
}
|
||||
_, err = tx.ExecContext(c, sql, args...)
|
||||
if err != nil {
|
||||
log.Fatalf("fail executing seed role pages query, %v", err)
|
||||
return err
|
||||
}
|
||||
|
||||
tx.Commit()
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -77,4 +77,13 @@ Project ini menggunakan autentikasi dengan token dari keycloak. Untuk kebutuhan
|
||||
..
|
||||
..
|
||||
KEYCLOAK_IS_ENABLE=false
|
||||
```
|
||||
|
||||
## Seed Data
|
||||
Project ini menggunakan seed data untuk integrasi dengan component di frontend.
|
||||
```bash
|
||||
// masuk ke root project
|
||||
cd <project_name>
|
||||
|
||||
go run ./migrations/seeder.go
|
||||
```
|
||||
Reference in New Issue
Block a user