package models import ( "database/sql" "errors" "github.com/google/uuid" ) type WebmasterId string type Webmaster struct { Id WebmasterId Name string Email string } type WebmasterModel struct { DB *sql.DB } // Commit a SiteWebmaster to the database func (m *WebmasterModel) Insert(name string, email string) (WebmasterId, error) { stmt := `INSERT INTO webmasters (id, name, email) VALUES(?, ?, ?)` id := uuid.NewString() _, err := m.DB.Exec(stmt, id, name, email) if err != nil { return "", err } return WebmasterId(id), nil } // Retrieve a SiteWebmasterModel from the database by id func (m *WebmasterModel) Get(id WebmasterId) (*Webmaster, error) { stmt := `SELECT id, name, email FROM webmasters WHERE id = ?` result := m.DB.QueryRow(stmt, id) w := &Webmaster{} err := result.Scan(&w.Id, &w.Name, &w.Email) if err != nil { if errors.Is(err, sql.ErrNoRows) { return nil, ErrNoRecord } else { return nil, err } } return w, nil } // Update a SiteWebmasterModel in the database with the values of the passed webmaster func (m *WebmasterModel) Update(webmaster *Webmaster) error { return nil } // Delete a SiteWebmasterModel from the database func (m *WebmasterModel) Delete(webmaster *Webmaster) error { return nil }