1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- package rest
- import (
- "git.nspix.com/golang/micro/gateway/http"
- "gorm.io/gorm"
- "strings"
- )
- type Options struct {
- EnableNamespace bool
- Namespace string
- DB *gorm.DB
- Prefix string
- TablePrefixes []string
- RemoveTablePrefix bool
- Formatter *Formatter
- Middleware []http.Middleware
- MigrateOptions *MigrateOptions
- }
- type Option func(o *Options)
- func WithMigration(ops ...MigrateOption) Option {
- return func(o *Options) {
- if o.MigrateOptions == nil {
- o.MigrateOptions = &MigrateOptions{}
- }
- for _, f := range ops {
- f(o.MigrateOptions)
- }
- }
- }
- func WithPrefix(prefix string) Option {
- return func(o *Options) {
- if !strings.HasPrefix(prefix, "/") {
- prefix = "/" + prefix
- }
- if strings.HasSuffix(prefix, "/") {
- prefix = strings.TrimSuffix(prefix, "/")
- }
- o.Prefix = prefix
- }
- }
- func WithNamespace(namespace string) Option {
- return func(o *Options) {
- o.Namespace = namespace
- }
- }
- func WithDB(db *gorm.DB) Option {
- return func(o *Options) {
- o.DB = db
- }
- }
- func NewOptions() *Options {
- return &Options{
- Namespace: DefaultNamespace,
- Formatter: DefaultFormatter,
- Middleware: make([]http.Middleware, 0),
- MigrateOptions: &MigrateOptions{},
- }
- }
|