micro--go-micro
4391545cf2
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
31 行
578 B
Go
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
|
|
}
|
|
}
|