123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- package model
- import (
- "database/sql"
- "errors"
- "fmt"
- "strings"
- )
- type SysCfg struct {
- Model
- }
- type SysCfgRow struct {
- Id int64
- CfgKey string
- CfgValue string
- }
- func NewSysCfg(db *sql.DB) *SysCfg {
- return &SysCfg{
- Model{
- db: db,
- },
- }
- }
- func (m *SysCfg) Insert(key, value string) (int64, error) {
- if key == "" {
- return 0, errors.New("KEY不能为空")
- }
- ret, err := m.db.Exec("INSERT INTO syscfg(cfg_key,cfg_value) VALUES(?,?)", key, value)
- if err != nil {
- return 0, err
- } else {
- return ret.LastInsertId()
- }
- }
- func (m *SysCfg) Delete(id int64) (int64, error) {
- if id <= 0 {
- return 0, errors.New("ID必须是正整数")
- }
- ret, err := m.db.Exec("DELETE FROM syscfg WHERE id=?", id)
- if err != nil {
- return 0, err
- } else {
- return ret.RowsAffected()
- }
- }
- func (m *SysCfg) DeleteByKey(key string) (int64, error) {
- if key == "" {
- return 0, errors.New("KEY不能为空")
- }
- ret, err := m.db.Exec("DELETE FROM syscfg WHERE cfg_key=?", key)
- if err != nil {
- return 0, err
- } else {
- return ret.RowsAffected()
- }
- }
- func (m *SysCfg) Update(id int64, value string) (int64, error) {
- if id <= 0 {
- return 0, errors.New("ID必须是正整数")
- }
- ret, err := m.db.Exec("UPDATE syscfg SET cfg_value=? WHERE id=?", value, id)
- if err != nil {
- return 0, err
- } else {
- return ret.RowsAffected()
- }
- }
- func (m *SysCfg) UpdateByKey(key, value string) (int64, error) {
- if key == "" {
- return 0, errors.New("KEY不能为空")
- }
- ret, err := m.db.Exec("UPDATE syscfg SET cfg_value=? WHERE cfg_key=?", value, key)
- if err != nil {
- return 0, err
- } else {
- return ret.RowsAffected()
- }
- }
- func (m *SysCfg) Get(id int64) (*SysCfgRow, error) {
- if id <= 0 {
- return nil, errors.New("ID必须是正整数")
- }
- result := m.db.QueryRow("SELECT id,cfg_key,cfg_value FROM syscfg WHERE id=?", id)
- row := SysCfgRow{}
- err := result.Scan(&row.Id, &row.CfgKey, &row.CfgValue)
- if err != nil {
- if err == sql.ErrNoRows {
- return nil, errors.New("记录不存在")
- } else {
- return nil, err
- }
- } else {
- return &row, nil
- }
- }
- func (m *SysCfg) GetByKey(key string) (*SysCfgRow, error) {
- if key == "" {
- return nil, errors.New("KEY不能为空")
- }
- result := m.db.QueryRow("SELECT id,cfg_key,cfg_value FROM syscfg WHERE cfg_key=?", key)
- row := SysCfgRow{}
- err := result.Scan(&row.Id, &row.CfgKey, &row.CfgValue)
- if err != nil {
- if err == sql.ErrNoRows {
- return nil, errors.New("记录不存在")
- } else {
- return nil, err
- }
- } else {
- return &row, nil
- }
- }
- func (m *SysCfg) GetByKeys(keys []string) (map[string]string, error) {
- l := len(keys)
- if l == 0 {
- return nil, errors.New("KEY列表不能为空")
- }
- keysArgs := make([]interface{}, l)
- for i := 0; i < l; i++ {
- keysArgs[i] = keys[i]
- }
- placeholders := strings.Join(strings.Split(strings.Repeat("?", l), ""), ",")
- sql := fmt.Sprintf("SELECT cfg_key,cfg_value FROM syscfg WHERE cfg_key IN(%s)", placeholders)
- result, err := m.db.Query(sql, keysArgs...)
- if err != nil {
- return nil, err
- } else {
- values := make(map[string]string)
- for result.Next() {
- var k, v string
- result.Scan(&k, &v)
- values[k] = v
- }
- return values, nil
- }
- }
- func (m *SysCfg) GetAll() ([]*SysCfgRow, error) {
- result, err := m.db.Query("SELECT id,cfg_key,cfg_value FROM syscfg ORDER BY id")
- if err != nil {
- return nil, err
- }
- rows := make([]*SysCfgRow, 0)
- for result.Next() {
- row := SysCfgRow{}
- err = result.Scan(&row.Id, &row.CfgKey, &row.CfgValue)
- if err != nil {
- continue
- }
- rows = append(rows, &row)
- }
- return rows, nil
- }
- func (m *SysCfg) Set(key, value string) (int64, error) {
- if key == "" {
- return 0, errors.New("KEY不能为空")
- }
- ret, err := m.db.Exec("REPLACE INTO syscfg(cfg_key,cfg_value) VALUES(?,?)", key, value)
- if err != nil {
- return 0, err
- } else {
- return ret.RowsAffected()
- }
- }
|