github.com/kotovmak/go-admin@v1.1.1/plugins/admin/models/site.go (about)

     1  package models
     2  
     3  import (
     4  	"database/sql"
     5  
     6  	"github.com/kotovmak/go-admin/modules/utils"
     7  
     8  	"github.com/kotovmak/go-admin/modules/collection"
     9  	"github.com/kotovmak/go-admin/modules/db"
    10  	"github.com/kotovmak/go-admin/modules/db/dialect"
    11  	"github.com/kotovmak/go-admin/plugins/admin/modules/form"
    12  )
    13  
    14  // SiteModel is role model structure.
    15  type SiteModel struct {
    16  	Base
    17  
    18  	Id    int64
    19  	Key   string
    20  	Value string
    21  	Desc  string
    22  	State int64
    23  
    24  	CreatedAt string
    25  	UpdatedAt string
    26  }
    27  
    28  const (
    29  	SiteItemOpenState = 1
    30  	SiteItemOffState  = 0
    31  )
    32  
    33  // Site return a default role model.
    34  func Site() SiteModel {
    35  	return SiteModel{Base: Base{TableName: "goadmin_site"}}
    36  }
    37  
    38  func (t SiteModel) SetConn(con db.Connection) SiteModel {
    39  	t.Conn = con
    40  	return t
    41  }
    42  
    43  func (t SiteModel) WithTx(tx *sql.Tx) SiteModel {
    44  	t.Tx = tx
    45  	return t
    46  }
    47  
    48  func (t SiteModel) Init(cfg map[string]string) SiteModel {
    49  	items, err := t.Table(t.TableName).All()
    50  	if db.CheckError(err, db.QUERY) {
    51  		panic(err)
    52  	}
    53  	itemsCol := collection.Collection(items)
    54  	for key, value := range cfg {
    55  		row := itemsCol.Where("key", "=", key)
    56  		if row.Length() == 0 {
    57  			_, err := t.Table(t.TableName).Insert(dialect.H{
    58  				"key":   key,
    59  				"value": value,
    60  				"state": SiteItemOpenState,
    61  			})
    62  			if db.CheckError(err, db.INSERT) {
    63  				panic(err)
    64  			}
    65  		}
    66  		//else {
    67  		//	if value != "" {
    68  		//		_, err := t.Table(t.TableName).
    69  		//			Where("key", "=", key).Update(dialect.H{
    70  		//			"value": value,
    71  		//		})
    72  		//		if db.CheckError(err, db.UPDATE) {
    73  		//			panic(err)
    74  		//		}
    75  		//	}
    76  		//}
    77  	}
    78  	return t
    79  }
    80  
    81  func (t SiteModel) AllToMap() map[string]string {
    82  
    83  	var m = make(map[string]string)
    84  
    85  	items, err := t.Table(t.TableName).Where("state", "=", SiteItemOpenState).All()
    86  	if db.CheckError(err, db.QUERY) {
    87  		return m
    88  	}
    89  
    90  	for _, item := range items {
    91  		m[item["key"].(string)] = item["value"].(string)
    92  	}
    93  
    94  	return m
    95  }
    96  
    97  func (t SiteModel) AllToMapInterface() map[string]interface{} {
    98  
    99  	var m = make(map[string]interface{})
   100  
   101  	items, err := t.Table(t.TableName).Where("state", "=", SiteItemOpenState).All()
   102  	if db.CheckError(err, db.QUERY) {
   103  		return m
   104  	}
   105  
   106  	for _, item := range items {
   107  		m[item["key"].(string)] = item["value"]
   108  	}
   109  
   110  	m["id"] = "1"
   111  
   112  	return m
   113  }
   114  
   115  var allowEmptyKeys = []string{
   116  	"animation_type", "custom_head_html", "custom_foot_html", "custom_404_html",
   117  	"custom_403_html", "custom_500_html", "footer_info", "bootstrap_file_path",
   118  	"info_log_path", "error_log_path", "access_log_path", "asset_url", "extra", "domain",
   119  }
   120  
   121  func (t SiteModel) Update(v form.Values) error {
   122  	for key, vv := range v {
   123  		if len(vv) > 0 && (vv[0] != "" || utils.InArray(allowEmptyKeys, key)) {
   124  			_, err := t.Table(t.TableName).Where("key", "=", key).Update(dialect.H{
   125  				"value": vv[0],
   126  			})
   127  			if db.CheckError(err, db.UPDATE) {
   128  				return err
   129  			}
   130  		}
   131  	}
   132  	return nil
   133  }