如何为CRUD模型创建通用接口?

时间:2016-12-31 17:32:04

标签: go

我试图为我希望在api中使用的模型创建一个通用界面。

type Model interface {
    Create(interface{}) (int64, error)
    Update(string, interface{}) (error)
}

我有一个实现它的personModel:

type Person struct {
    Id int `json:"id"`
    FirstName string `json:"firstName"`
}

type PersonModel struct {
    Db *sql.DB
}

func (model *PersonModel) Create(personStruct person) (int64, error) {
    // do database related stuff to create the person from the struct
}

func (model *PersonModel) Update(id string, personStruct person) (error) {
    // do database related stuff to update the person model from the struct
}

但是,我无法解决此问题,因为我收到的错误与PersonModel未实现Model接口的方式有关。

我的主要目标是为我的应用程序中的所有模型(实现createupdate)提供一个统一的界面,供控制器使用。我该如何克服这个问题?

1 个答案:

答案 0 :(得分:1)

你应该尝试像这样实现你的方法,这只是因为你在你的func中创建并更新一个空接口作为params:

func (model *PersonModel) Create(v interface{}) (int64, error) {
    // do database related stuff to create the person from the struct
}

func (model *PersonModel) Update(id string, v interface{}) (error) {
    // do database related stuff to update the person model from the struct
}