86 lines
2.5 KiB
Go
86 lines
2.5 KiB
Go
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
|
|
}
|