initiate seeder : menu seeder

This commit is contained in:
renaldybrada
2026-02-24 10:54:16 +07:00
parent ab08cbf9e2
commit 37ed3f76f3
2 changed files with 94 additions and 0 deletions
+85
View File
@@ -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
}
+9
View File
@@ -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
```