Skip to content

feat: accept earlier prefixes with Definition.Aliases - #8

Merged
enilsen16 merged 34 commits into
mainfrom
feat/prefix-aliases
Oct 22, 2026
Merged

enilsen16 merged 34 commits into
mainfrom
feat/prefix-aliases

Conversation

@enilsen16

@enilsen16 enilsen16 commented Oct 22, 2026 •

Copy link
Copy Markdown
Collaborator

Stacked on #7.

Summary

Definition.Aliases lists earlier object types. Parsing still accepts them through Parse, FromStorage, Scan and JSON in the full format, and through ParseUnion. Every encoder emits ObjectType. A prefix can then be renamed, the way Stripe moved card_ and src_ to pm_, without breaking values that are already stored or sent.

  • The spec keeps one prefixes list, with the object type's prefix first. Parsing, WrongPrefixError.Want and union matching all read that list, and in a union the longest prefix still wins.
  • Alias names go through ObjectType.validate. One set of seen names rejects both a repeat of the object type and a duplicate alias.
  • CheckUnion rejects an alias that is another member's prefix.

Tests

alias_test.go covers parsing each alias, Scan in full storage, an unknown prefix, union matching, and the definition errors. Parse stays at 22 ns with 0 allocs. CI runs only on PRs to main. Locally, go test -race, go vet and golangci-lint pass.

Signed-off-by: Erik Nilsen <enilsen16@live.com>
Signed-off-by: Erik Nilsen <enilsen16@live.com>
Signed-off-by: Erik Nilsen <enilsen16@live.com>
Signed-off-by: Erik Nilsen <enilsen16@live.com>
Signed-off-by: Erik Nilsen <enilsen16@live.com>
Signed-off-by: Erik Nilsen <enilsen16@live.com>
Signed-off-by: Erik Nilsen <enilsen16@live.com>
@coderabbitai

coderabbitai Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@enilsen16
enilsen16 added this pull request to stack #9 October 22, 2026 14:17
Signed-off-by: Erik Nilsen <enilsen16@live.com>
…options

Signed-off-by: Erik Nilsen <enilsen16@live.com>
…ition

Signed-off-by: Erik Nilsen <enilsen16@live.com>
Signed-off-by: Erik Nilsen <enilsen16@live.com>
…options

Signed-off-by: Erik Nilsen <enilsen16@live.com>

# Conflicts:
#	objectid_test.go
…d-checks

Signed-off-by: Erik Nilsen <enilsen16@live.com>

# Conflicts:
#	objectid.go
#	objectidproto/objectidproto.go
#	objectidproto/objectidproto_test.go
…n errors

Signed-off-by: Erik Nilsen <enilsen16@live.com>
Signed-off-by: Erik Nilsen <enilsen16@live.com>
Signed-off-by: Erik Nilsen <enilsen16@live.com>
Signed-off-by: Erik Nilsen <enilsen16@live.com>
Signed-off-by: Erik Nilsen <enilsen16@live.com>
Signed-off-by: Erik Nilsen <enilsen16@live.com>
Aliases now live in one prefixes list that parsing and unions both read, and alias names go through ObjectType.validate.

Signed-off-by: Erik Nilsen <enilsen16@live.com>
…-options

Signed-off-by: Erik Nilsen <enilsen16@live.com>

# Conflicts:
#	objectid.go
#	objectid_test.go
Signed-off-by: Erik Nilsen <enilsen16@live.com>
Signed-off-by: Erik Nilsen <enilsen16@live.com>
Signed-off-by: Erik Nilsen <enilsen16@live.com>
…-options

Signed-off-by: Erik Nilsen <enilsen16@live.com>

# Conflicts:
#	objectid.go
#	objectid_test.go
…d-checks

Signed-off-by: Erik Nilsen <enilsen16@live.com>

# Conflicts:
#	objectid.go
Signed-off-by: Erik Nilsen <enilsen16@live.com>
Signed-off-by: Erik Nilsen <enilsen16@live.com>
Signed-off-by: Erik Nilsen <enilsen16@live.com>
Signed-off-by: Erik Nilsen <enilsen16@live.com>
Signed-off-by: Erik Nilsen <enilsen16@live.com>

# Conflicts:
#	objectid.go
Signed-off-by: Erik Nilsen <enilsen16@live.com>
…aliases

Signed-off-by: Erik Nilsen <enilsen16@live.com>
Base automatically changed from feat/union-as to main October 22, 2026 16:31
Signed-off-by: Erik Nilsen <enilsen16@live.com>
@enilsen16
enilsen16 marked this pull request as ready for review October 22, 2026 16:32
@enilsen16
enilsen16 merged commit 542fc90 into main Oct 22, 2026
3 checks passed
@enilsen16
enilsen16 deleted the feat/prefix-aliases branch October 22, 2026 16:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant