package services import "database/sql" type DashboardsService struct { ctx *Context } type DashboardItem struct { Id int64 `json:"id"` Name string `json:"name"` Contents string `json:"contents"` } func (s *DashboardsService) GetList() ([]DashboardItem, error) { items := make([]DashboardItem, 0) rows, err := s.ctx.DB.Query("SELECT id, name, contents FROM dashboards") if err != nil { if err == sql.ErrNoRows { return items, nil } return nil, err } defer rows.Close() for rows.Next() { item := DashboardItem{} err := rows.Scan(&item.Id, &item.Name, &item.Contents) if err != nil { return nil, err } items = append(items, item) } err = rows.Err() if err != nil { return nil, err } return items, nil } func (s *DashboardsService) Create(name string, contents string) (*DashboardItem, error) { item := DashboardItem{ Name: name, Contents: contents, } _, err := s.ctx.DB.Exec("INSERT INTO dashboards (name, contents) VALUES (?, ?)", item.Name, item.Contents) if err != nil { return nil, err } return &item, nil } func (s *DashboardsService) Update(id int64, name string, contents string) (*DashboardItem, error) { item := DashboardItem{ Id: id, Name: name, Contents: contents, } _, err := s.ctx.DB.Exec("UPDATE dashboards SET contents = ?, name = ? WHERE id = ?", item.Contents, item.Name, item.Id) if err != nil { return nil, err } return &item, nil } func (s *DashboardsService) Delete(id int64) error { _, err := s.ctx.DB.Exec("DELETE FROM dashboards WHERe id = ?", id) return err } func (s *DashboardsService) GetById(id int64) (*DashboardItem, error) { item := DashboardItem{} row := s.ctx.DB.QueryRow("SELECT id, name, contents FROM dashboards WHERE id = ?", id) err := row.Scan(&item.Id, &item.Name, &item.Contents) if err != nil { return nil, err } return &item, nil }