package rest import ( "context" "errors" "git.nspix.com/golang/micro/gateway/http" "gorm.io/gorm" ) var ( std *CRUD ) var ( ErrUninitializedComponent = errors.New("uninitialized component") ) func Init(dialer gorm.Dialector) (err error) { std, err = New(dialer) return } func Instance() *CRUD { return std } func DB() (db *gorm.DB, err error) { if std == nil { return nil, ErrUninitializedComponent } return std.db, nil } //WithDelegate 添加一个观察者 func WithDelegate(ctx context.Context, d Delegate) (err error) { if std == nil { return ErrUninitializedComponent } std.RegisterDelegate(d) return nil } //AttachModel 添加一个模块 func AttachModel(ctx context.Context, model Model, cbs ...Option) (err error) { if std == nil { return ErrUninitializedComponent } return std.Attach(ctx, model, cbs...) } //GetSchemas 获取模块的schema func GetSchemas(ctx context.Context, model Model) ([]*Schema, error) { if std == nil { return nil, ErrUninitializedComponent } return std.GetSchemas(ctx, DefaultNamespace, model.ModuleName(), model.TableName()) } //UseRouter 绑定路由 func UseRouter(hs *http.Server, ms ...http.Middleware) (err error) { if std == nil { return ErrUninitializedComponent } std.api.Router(hs, ms...) return }