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 }