refactor: use GraphQL string scalar for KSUID transit

Marshal and unmarshal both use the base62 KSUID string, replacing the
legacy JSON object wrapper and aligning gqlgen scalar behavior.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-29 18:03:39 -07:00
parent 29b855f2b9
commit 0f8e79a890
7 changed files with 36 additions and 39 deletions
+24 -20
View File
@@ -3,6 +3,7 @@ package dbx
import (
"bytes"
"encoding/json"
"io"
"testing"
"github.com/segmentio/ksuid"
@@ -50,16 +51,32 @@ func TestStringKSUID_Conversion(t *testing.T) {
func TestStringKSUID_GQL(t *testing.T) {
id := NewStringKSUID()
wire := assertKSUIDGQLMarshal(t, id)
var parsed StringKSUID
require.NoError(t, parsed.UnmarshalGQL(wire))
assert.Equal(t, id, parsed)
}
func TestBinaryKSUID_GQL(t *testing.T) {
id := NewBinaryKSUID()
wire := assertKSUIDGQLMarshal(t, id)
var parsed BinaryKSUID
require.NoError(t, parsed.UnmarshalGQL(wire))
assert.Equal(t, id, parsed)
}
func assertKSUIDGQLMarshal(t *testing.T, id interface{ String() string; MarshalGQL(w io.Writer) }) string {
t.Helper()
var buf bytes.Buffer
id.MarshalGQL(&buf)
var transport ksuidGQLTransport
require.NoError(t, json.Unmarshal(buf.Bytes(), &transport))
assert.Equal(t, id.String(), transport.KSUIDStr)
var parsed StringKSUID
require.NoError(t, parsed.UnmarshalGQL(id.String()))
assert.Equal(t, id, parsed)
var wire string
require.NoError(t, json.Unmarshal(buf.Bytes(), &wire))
assert.Equal(t, id.String(), wire)
return wire
}
func TestBinaryKSUID_ScanValue(t *testing.T) {
@@ -100,19 +117,6 @@ func TestBinaryKSUID_Conversion(t *testing.T) {
assert.Equal(t, b, s.AsBinaryKSUID())
}
func TestBinaryKSUID_GQL(t *testing.T) {
id := NewBinaryKSUID()
var buf bytes.Buffer
id.MarshalGQL(&buf)
var transport ksuidGQLTransport
require.NoError(t, json.Unmarshal(buf.Bytes(), &transport))
assert.Equal(t, id.String(), transport.KSUIDStr)
var parsed BinaryKSUID
require.NoError(t, parsed.UnmarshalGQL(id.String()))
assert.Equal(t, id, parsed)
}
func TestParseStringKSUID(t *testing.T) {
id := ksuid.New()