mirror of
https://github.com/warmbly/warmbly.git
synced 2026-08-19 08:01:16 +00:00
62 lines
2.0 KiB
Go
62 lines
2.0 KiB
Go
package seed
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"github.com/google/uuid"
|
|
"github.com/jackc/pgx/v5/pgxpool"
|
|
)
|
|
|
|
func seedWorkers(ctx context.Context, pool *pgxpool.Pool, r *Result) error {
|
|
type worker struct {
|
|
id uuid.UUID
|
|
name string
|
|
ipAddr string
|
|
notes string
|
|
wType string
|
|
freeTier bool
|
|
}
|
|
workers := []worker{
|
|
{id: WorkerFreeID, name: "worker-free-1", ipAddr: "10.0.0.11", wType: "shared", freeTier: true, notes: "Free-tier shared worker"},
|
|
{id: WorkerSharedID, name: "worker-shared-1", ipAddr: "10.0.0.12", wType: "shared", freeTier: false, notes: "Premium shared worker"},
|
|
{id: WorkerDedicatedID, name: "worker-dedicated-1", ipAddr: "10.0.0.13", wType: "dedicated", freeTier: false, notes: "Reserved for enterprise org"},
|
|
}
|
|
|
|
for _, w := range workers {
|
|
_, err := pool.Exec(ctx, `
|
|
INSERT INTO workers (id, name, notes, ip_addr, active, worker_type, account_count, free_tier, created_at, updated_at)
|
|
VALUES ($1,$2,$3,$4,TRUE,$5,0,$6,$7,$7)
|
|
ON CONFLICT (id) DO UPDATE SET
|
|
name = EXCLUDED.name,
|
|
notes = EXCLUDED.notes,
|
|
ip_addr = EXCLUDED.ip_addr,
|
|
active = TRUE,
|
|
worker_type = EXCLUDED.worker_type,
|
|
free_tier = EXCLUDED.free_tier,
|
|
updated_at = NOW()
|
|
`, w.id, w.name, w.notes, w.ipAddr, w.wType, w.freeTier, time.Now())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
tier := "premium"
|
|
if w.freeTier {
|
|
tier = "free"
|
|
}
|
|
r.Workers = append(r.Workers, SeededWorker{Name: w.name, Tier: tier, Type: w.wType, ID: w.id.String()})
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func seedWorkerAssignments(ctx context.Context, pool *pgxpool.Pool, _ *Result) error {
|
|
// Acme (Pro plan) gets the dedicated worker. Use a stable assignment ID so
|
|
// re-running the seed updates rather than duplicates.
|
|
assignmentID := uuid.MustParse("00000000-0000-0000-0000-000000000280")
|
|
_, err := pool.Exec(ctx, `
|
|
INSERT INTO dedicated_worker_assignments (id, worker_id, user_id, subscription_id, assigned_at)
|
|
VALUES ($1, $2, $3, $4, NOW())
|
|
ON CONFLICT (id) DO NOTHING
|
|
`, assignmentID, WorkerDedicatedID, UserOwnerID, SubAcmeID)
|
|
return err
|
|
}
|