remove sql model
This commit is contained in:
		| @@ -1,41 +0,0 @@ | |||||||
| package sql |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"github.com/google/uuid" |  | ||||||
| 	"github.com/micro/go-micro/v3/codec" |  | ||||||
| 	"github.com/micro/go-micro/v3/model" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| type sqlEntity struct { |  | ||||||
| 	id         string |  | ||||||
| 	name       string |  | ||||||
| 	value      interface{} |  | ||||||
| 	codec      codec.Marshaler |  | ||||||
| 	attributes map[string]interface{} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (m *sqlEntity) Attributes() map[string]interface{} { |  | ||||||
| 	return m.attributes |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (m *sqlEntity) Id() string { |  | ||||||
| 	return m.id |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (m *sqlEntity) Name() string { |  | ||||||
| 	return m.name |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (m *sqlEntity) Value() interface{} { |  | ||||||
| 	return m.value |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func newEntity(name string, value interface{}, codec codec.Marshaler) model.Entity { |  | ||||||
| 	return &sqlEntity{ |  | ||||||
| 		id:         uuid.New().String(), |  | ||||||
| 		name:       name, |  | ||||||
| 		value:      value, |  | ||||||
| 		codec:      codec, |  | ||||||
| 		attributes: make(map[string]interface{}), |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
							
								
								
									
										104
									
								
								model/sql/sql.go
									
									
									
									
									
								
							
							
						
						
									
										104
									
								
								model/sql/sql.go
									
									
									
									
									
								
							| @@ -1,104 +0,0 @@ | |||||||
| // Package sql is the micro data model implementation |  | ||||||
| package sql |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"github.com/micro/go-micro/v3/codec/json" |  | ||||||
| 	"github.com/micro/go-micro/v3/model" |  | ||||||
| 	"github.com/micro/go-micro/v3/store" |  | ||||||
| 	"github.com/micro/go-micro/v3/store/memory" |  | ||||||
| 	memsync "github.com/micro/go-micro/v3/sync/memory" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| type sqlModel struct { |  | ||||||
| 	options model.Options |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (m *sqlModel) Init(opts ...model.Option) error { |  | ||||||
| 	for _, o := range opts { |  | ||||||
| 		o(&m.options) |  | ||||||
| 	} |  | ||||||
| 	return nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (m *sqlModel) NewEntity(name string, value interface{}) model.Entity { |  | ||||||
| 	// TODO: potentially pluralise name for tables |  | ||||||
| 	return newEntity(name, value, m.options.Codec) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (m *sqlModel) Create(e model.Entity) error { |  | ||||||
| 	// lock on the name of entity |  | ||||||
| 	if err := m.options.Sync.Lock(e.Name()); err != nil { |  | ||||||
| 		return err |  | ||||||
| 	} |  | ||||||
| 	// TODO: deal with the error |  | ||||||
| 	defer m.options.Sync.Unlock(e.Name()) |  | ||||||
|  |  | ||||||
| 	// TODO: potentially add encode to entity? |  | ||||||
| 	v, err := m.options.Codec.Marshal(e.Value()) |  | ||||||
| 	if err != nil { |  | ||||||
| 		return err |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// TODO: include metadata and set database |  | ||||||
| 	return m.options.Store.Write(&store.Record{ |  | ||||||
| 		Key:   e.Id(), |  | ||||||
| 		Value: v, |  | ||||||
| 	}, store.WriteTo(m.options.Database, e.Name())) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (m *sqlModel) Read(opts ...model.ReadOption) ([]model.Entity, error) { |  | ||||||
| 	var options model.ReadOptions |  | ||||||
| 	for _, o := range opts { |  | ||||||
| 		o(&options) |  | ||||||
| 	} |  | ||||||
| 	// TODO: implement the options that allow querying |  | ||||||
| 	return nil, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (m *sqlModel) Update(e model.Entity) error { |  | ||||||
| 	// TODO: read out the record first, update the fields and store |  | ||||||
|  |  | ||||||
| 	// lock on the name of entity |  | ||||||
| 	if err := m.options.Sync.Lock(e.Name()); err != nil { |  | ||||||
| 		return err |  | ||||||
| 	} |  | ||||||
| 	// TODO: deal with the error |  | ||||||
| 	defer m.options.Sync.Unlock(e.Name()) |  | ||||||
|  |  | ||||||
| 	// TODO: potentially add encode to entity? |  | ||||||
| 	v, err := m.options.Codec.Marshal(e.Value()) |  | ||||||
| 	if err != nil { |  | ||||||
| 		return err |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// TODO: include metadata and set database |  | ||||||
| 	return m.options.Store.Write(&store.Record{ |  | ||||||
| 		Key:   e.Id(), |  | ||||||
| 		Value: v, |  | ||||||
| 	}, store.WriteTo(m.options.Database, e.Name())) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (m *sqlModel) Delete(opts ...model.DeleteOption) error { |  | ||||||
| 	var options model.DeleteOptions |  | ||||||
| 	for _, o := range opts { |  | ||||||
| 		o(&options) |  | ||||||
| 	} |  | ||||||
| 	// TODO: implement the options that allow deleting |  | ||||||
| 	return nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (m *sqlModel) String() string { |  | ||||||
| 	return "sql" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func NewModel(opts ...model.Option) model.Model { |  | ||||||
| 	options := model.Options{ |  | ||||||
| 		Codec: new(json.Marshaler), |  | ||||||
| 		Sync:  memsync.NewSync(), |  | ||||||
| 		Store: memory.NewStore(), |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	return &sqlModel{ |  | ||||||
| 		options: options, |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
		Reference in New Issue
	
	Block a user