项目文件夹

文件
Claude 4391545cf2 refactor: redesign model package to match framework conventions
Rename model.Database interface to model.Model (consistent with
client.Client, server.Server, store.Store). Remove generics in
favor of interface{}-based API with reflection.

Key changes:
- model.Model interface: Register once, CRUD infers table from type
- DefaultModel + NewModel() + package-level convenience functions
- Schema registered via Register(&User{}), no per-call schema passing
- Memory implementation as default (in model package, like store)
- memory/sqlite/postgres backends updated for new interface
- protoc-gen-micro generates RegisterXModel() instead of generic factory
- All docs, blog, and README updated

https://claude.ai/code/session_01GkduEhcrqcG45rdfYh8dAc
2026-03-05 10:48:50 +00:00

31 行
578 B
Go

package model
// Options holds configuration for a Model.
type Options struct {
// DSN is the data source name / connection string.
DSN string
}
// WithDSN sets the data source name.
func WithDSN(dsn string) Option {
return func(o *Options) {
o.DSN = dsn
}
}
// NewOptions creates Options with defaults applied.
func NewOptions(opts ...Option) Options {
o := Options{}
for _, opt := range opts {
opt(&o)
}
return o
}
// WithTable overrides the auto-derived table name.
func WithTable(name string) RegisterOption {
return func(s *Schema) {
s.Table = name
}
}