Skip to content

Commit 42ed64d

Browse files
committed
refactor(id): UUID v7
1 parent 4c9f0a9 commit 42ed64d

28 files changed

Lines changed: 211 additions & 68 deletions

admin/api/endpoints.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"github.com/webhookx-io/webhookx/pkg/contextx"
88
"github.com/webhookx-io/webhookx/pkg/openapi"
99
"github.com/webhookx-io/webhookx/pkg/types"
10+
"github.com/webhookx-io/webhookx/pkg/uid"
1011
"github.com/webhookx-io/webhookx/utils"
1112
)
1213

@@ -45,7 +46,7 @@ func (api *API) GetEndpoint(w http.ResponseWriter, r *http.Request) {
4546

4647
func (api *API) CreateEndpoint(w http.ResponseWriter, r *http.Request) {
4748
var endpoint entities.Endpoint
48-
defaults := map[string]interface{}{"id": utils.KSUID()}
49+
defaults := map[string]interface{}{"id": uid.Generate(uid.EndpointPrefix)}
4950
if err := ValidateRequest(r, defaults, &endpoint); err != nil {
5051
api.error(400, w, err)
5152
return

admin/api/events.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ import (
99
"github.com/webhookx-io/webhookx/pkg/contextx"
1010
"github.com/webhookx-io/webhookx/pkg/openapi"
1111
"github.com/webhookx-io/webhookx/pkg/types"
12+
"github.com/webhookx-io/webhookx/pkg/uid"
1213
"github.com/webhookx-io/webhookx/services/eventbus"
13-
"github.com/webhookx-io/webhookx/utils"
1414
)
1515

1616
func (api *API) PageEvent(w http.ResponseWriter, r *http.Request) {
@@ -48,7 +48,7 @@ func (api *API) GetEvent(w http.ResponseWriter, r *http.Request) {
4848

4949
func (api *API) CreateEvent(w http.ResponseWriter, r *http.Request) {
5050
var event entities.Event
51-
defaults := map[string]interface{}{"id": utils.KSUID()}
51+
defaults := map[string]interface{}{"id": uid.Generate(uid.EventPrefix)}
5252
if err := ValidateRequest(r, defaults, &event); err != nil {
5353
api.error(400, w, err)
5454
return

admin/api/plugins.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"github.com/webhookx-io/webhookx/pkg/errs"
99
"github.com/webhookx-io/webhookx/pkg/openapi"
1010
"github.com/webhookx-io/webhookx/pkg/types"
11+
"github.com/webhookx-io/webhookx/pkg/uid"
1112
"github.com/webhookx-io/webhookx/utils"
1213
)
1314

@@ -46,7 +47,7 @@ func (api *API) GetPlugin(w http.ResponseWriter, r *http.Request) {
4647

4748
func (api *API) CreatePlugin(w http.ResponseWriter, r *http.Request) {
4849
var model entities.Plugin
49-
defaults := map[string]interface{}{"id": utils.KSUID()}
50+
defaults := map[string]interface{}{"id": uid.Generate(uid.PluginPrefix)}
5051
if err := ValidateRequest(r, defaults, &model); err != nil {
5152
api.error(400, w, err)
5253
return

admin/api/sources.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"github.com/webhookx-io/webhookx/pkg/contextx"
88
"github.com/webhookx-io/webhookx/pkg/openapi"
99
"github.com/webhookx-io/webhookx/pkg/types"
10+
"github.com/webhookx-io/webhookx/pkg/uid"
1011
"github.com/webhookx-io/webhookx/utils"
1112
)
1213

@@ -45,7 +46,7 @@ func (api *API) GetSource(w http.ResponseWriter, r *http.Request) {
4546

4647
func (api *API) CreateSource(w http.ResponseWriter, r *http.Request) {
4748
var source entities.Source
48-
defaults := map[string]interface{}{"id": utils.KSUID()}
49+
defaults := map[string]interface{}{"id": uid.Generate(uid.SourcePrefix)}
4950
if err := ValidateRequest(r, defaults, &source); err != nil {
5051
api.error(400, w, err)
5152
return

admin/api/workspaces.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"github.com/webhookx-io/webhookx/db/entities"
88
"github.com/webhookx-io/webhookx/pkg/openapi"
99
"github.com/webhookx-io/webhookx/pkg/types"
10+
"github.com/webhookx-io/webhookx/pkg/uid"
1011
"github.com/webhookx-io/webhookx/utils"
1112
)
1213

@@ -45,13 +46,13 @@ func (api *API) GetWorkspace(w http.ResponseWriter, r *http.Request) {
4546

4647
func (api *API) CreateWorkspace(w http.ResponseWriter, r *http.Request) {
4748
var workspace entities.Workspace
48-
defaults := map[string]interface{}{"id": utils.KSUID()}
49+
defaults := map[string]interface{}{"id": uid.Generate(uid.WorkspacePrefix)}
4950
if err := ValidateRequest(r, defaults, &workspace); err != nil {
5051
api.error(400, w, err)
5152
return
5253
}
5354

54-
workspace.ID = utils.KSUID()
55+
workspace.ID = uid.Generate(uid.WorkspacePrefix)
5556
err := api.db.Workspaces.Insert(r.Context(), &workspace)
5657
api.assert(err)
5758

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
ALTER TABLE "attempt_details"
2+
ALTER COLUMN "id" TYPE CHAR(27),
3+
ALTER COLUMN "ws_id" TYPE CHAR(27);
4+
5+
ALTER TABLE "attempts"
6+
ALTER COLUMN "id" TYPE CHAR(27),
7+
ALTER COLUMN "event_id" TYPE CHAR(27),
8+
ALTER COLUMN "endpoint_id" TYPE CHAR(27),
9+
ALTER COLUMN "ws_id" TYPE CHAR(27);
10+
11+
ALTER TABLE "endpoints"
12+
ALTER COLUMN "id" TYPE CHAR(27),
13+
ALTER COLUMN "ws_id" TYPE CHAR(27);
14+
15+
ALTER TABLE "events"
16+
ALTER COLUMN "id" TYPE CHAR(27),
17+
ALTER COLUMN "ws_id" TYPE CHAR(27);
18+
19+
ALTER TABLE "plugins"
20+
ALTER COLUMN "id" TYPE CHAR(27),
21+
ALTER COLUMN "source_id" TYPE CHAR(27),
22+
ALTER COLUMN "endpoint_id" TYPE CHAR(27),
23+
ALTER COLUMN "ws_id" TYPE CHAR(27);
24+
25+
ALTER TABLE "sources"
26+
ALTER COLUMN "id" TYPE CHAR(27),
27+
ALTER COLUMN "ws_id" TYPE CHAR(27);
28+
29+
ALTER TABLE "workspaces" ALTER COLUMN "id" TYPE CHAR(27);
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
ALTER TABLE "attempt_details"
2+
ALTER COLUMN "id" TYPE TEXT,
3+
ALTER COLUMN "ws_id" TYPE TEXT;
4+
5+
ALTER TABLE "attempts"
6+
ALTER COLUMN "id" TYPE TEXT,
7+
ALTER COLUMN "event_id" TYPE TEXT,
8+
ALTER COLUMN "endpoint_id" TYPE TEXT,
9+
ALTER COLUMN "ws_id" TYPE TEXT;
10+
11+
ALTER TABLE "endpoints"
12+
ALTER COLUMN "id" TYPE TEXT,
13+
ALTER COLUMN "ws_id" TYPE TEXT;
14+
15+
ALTER TABLE "events"
16+
ALTER COLUMN "id" TYPE TEXT,
17+
ALTER COLUMN "ws_id" TYPE TEXT;
18+
19+
ALTER TABLE "plugins"
20+
ALTER COLUMN "id" TYPE TEXT,
21+
ALTER COLUMN "source_id" TYPE TEXT,
22+
ALTER COLUMN "endpoint_id" TYPE TEXT,
23+
ALTER COLUMN "ws_id" TYPE TEXT;
24+
25+
ALTER TABLE "sources"
26+
ALTER COLUMN "id" TYPE TEXT,
27+
ALTER COLUMN "ws_id" TYPE TEXT;
28+
29+
ALTER TABLE "workspaces" ALTER COLUMN "id" TYPE TEXT;

db/migrator/migrator.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313
"github.com/golang-migrate/migrate/v4/database/postgres"
1414
"github.com/golang-migrate/migrate/v4/source/iofs"
1515
"github.com/webhookx-io/webhookx/db/migrations"
16-
"github.com/webhookx-io/webhookx/utils"
16+
"github.com/webhookx-io/webhookx/pkg/uid"
1717
)
1818

1919
type Log struct{}
@@ -185,6 +185,6 @@ func (m *Migrator) Status() (status Status, err error) {
185185

186186
func (m *Migrator) initDefaultWorkspace() error {
187187
sql := `INSERT INTO workspaces(id, name) VALUES($1, 'default') ON CONFLICT(name) DO NOTHING;`
188-
_, err := m.db.Exec(sql, utils.KSUID())
188+
_, err := m.db.Exec(sql, uid.Generate(uid.WorkspacePrefix))
189189
return err
190190
}

dispatcher/dispatcher.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ import (
1010
"github.com/webhookx-io/webhookx/pkg/metrics"
1111
"github.com/webhookx-io/webhookx/pkg/tracing"
1212
"github.com/webhookx-io/webhookx/pkg/types"
13+
"github.com/webhookx-io/webhookx/pkg/uid"
1314
"github.com/webhookx-io/webhookx/services/eventbus"
14-
"github.com/webhookx-io/webhookx/utils"
1515
"go.uber.org/zap"
1616
)
1717

@@ -122,7 +122,7 @@ func fanout(event *entities.Event, endpoints []*entities.Endpoint, mode entities
122122
for _, endpoint := range endpoints {
123123
delay := endpoint.Retry.Config.Attempts[0]
124124
attempt := &entities.Attempt{
125-
ID: utils.KSUID(),
125+
ID: uid.Generate(uid.AttemptPrefix),
126126
EventId: event.ID,
127127
EndpointId: endpoint.ID,
128128
Status: entities.AttemptStatusInit,

go.mod

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,14 @@ require (
4141
github.com/rs/zerolog v1.35.1
4242
github.com/santhosh-tekuri/jsonschema/v6 v6.0.2
4343
github.com/satori/go.uuid v1.2.0
44-
github.com/segmentio/ksuid v1.0.4
4544
github.com/spf13/cobra v1.10.2
4645
github.com/stretchr/testify v1.11.1
4746
github.com/stripe/stripe-go/v84 v84.4.1
4847
github.com/tetratelabs/wazero v1.11.0
4948
github.com/tidwall/gjson v1.18.0
5049
github.com/vmihailenco/msgpack/v5 v5.4.1
5150
github.com/webhookx-io/webhookx/api/license v0.1.0
51+
go.jetify.com/typeid/v2 v2.0.0-alpha.3
5252
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.68.0
5353
go.opentelemetry.io/contrib/propagators/autoprop v0.68.0
5454
go.opentelemetry.io/otel v1.43.0
@@ -133,6 +133,7 @@ require (
133133
github.com/go-playground/locales v0.14.1 // indirect
134134
github.com/go-playground/universal-translator v0.18.1 // indirect
135135
github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
136+
github.com/gofrs/uuid/v5 v5.3.2 // indirect
136137
github.com/google/go-cmp v0.7.0 // indirect
137138
github.com/google/pprof v0.0.0-20260402051712-545e8a4df936 // indirect
138139
github.com/google/uuid v1.6.0 // indirect

0 commit comments

Comments
 (0)