12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- 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
- }
- func MustDB() (db *gorm.DB) {
- var (
- err error
- )
- if db, err = DB(); err != nil {
- panic(err)
- }
- return db
- }
- //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
- }
|