Feature 02 task 2: Store helpers: transactions, ULIDs and time conventions #11

2 changed files with 7 additions and 1 deletions
Showing only changes of commit 5304887ce9 - Show all commits
+3
View File
@@ -47,6 +47,9 @@ func (t *Timestamp) Scan(src any) error {
if err != nil { if err != nil {
return fmt.Errorf("store: scan Timestamp %q: %w", s, err) return fmt.Errorf("store: scan Timestamp %q: %w", s, err)
} }
if parsed.Format(timestampLayout) != s {
return fmt.Errorf("store: scan Timestamp %q: want %s", s, timestampLayout)
}
t.Time = parsed t.Time = parsed
return nil return nil
} }
+4 -1
View File
@@ -60,7 +60,10 @@ func TestTimestampRejects(t *testing.T) {
if _, err := (Timestamp{}).Value(); err == nil { if _, err := (Timestamp{}).Value(); err == nil {
t.Error("zero Timestamp Value succeeded") t.Error("zero Timestamp Value succeeded")
} }
for _, src := range []any{nil, int64(0), []byte("2026-10-03T12:37:05.123Z"), "2026-10-03T12:37:05Z", "2026-10-03T08:37:05.123-04:00", "garbage"} { for _, src := range []any{
nil, int64(0), []byte("2026-10-03T12:37:05.123Z"), "2026-10-03T12:37:05Z",
"2026-10-03T08:37:05.123-04:00", "2026-10-03T12:37:05,123Z", "garbage",
} {
var ts Timestamp var ts Timestamp
if err := ts.Scan(src); err == nil { if err := ts.Scan(src); err == nil {
t.Errorf("Scan(%#v) succeeded", src) t.Errorf("Scan(%#v) succeeded", src)