package model import ( "aps_crm/conf" "aps_crm/pkg/logx" "aps_crm/pkg/mysqlx" "aps_crm/pkg/safe" "gorm.io/gorm/schema" ) func Init() error { if err := mysqlx.Init(&conf.Conf.Mysql, logx.GetLogger()); err != nil { return err } if err := RegisterTables(); err != nil { return err } safe.Go(func() { InsertDefaultData() }) return nil } func RegisterTables() error { db := mysqlx.GetDB() err := db.AutoMigrate( User{}, Menu{}, JwtBlacklist{}, Country{}, Province{}, City{}, Client{}, ClientLevel{}, ClientOrigin{}, ClientStatus{}, ClientType{}, Contact{}, EnterpriseNature{}, EnterpriseScale{}, FollowRecord{}, Industry{}, RegisteredCapital{}, SaleChance{}, SalesLeads{}, SalesSources{}, SaleStage{}, SaleType{}, RegularCustomers{}, Possibility{}, Status{}, Quotation{}, MasterOrder{}, SubOrder{}, Product{}, SalesDetails{}, SalesReturn{}, SalesRefund{}, Contract{}, Plan{}, ServiceContract{}, OrderManage{}, ServiceFollowup{}, CustomerServiceSheet{}, ServiceFeeManage{}, Authority{}, Api{}, Department{}, Satisfaction{}, TimelyRate{}, SolveRate{}, IsVisit{}, IsVisit{}, ReportSource{}, OrderType{}, ServiceContractStatus{}, ServiceContractType{}, RefundMethod{}, IsInvoice{}, AccountId{}, SalesReturnStatus{}, Repository{}, QuotationStatus{}, Currency{}, ) return err } type InitDefaultData interface { InitDefaultData() error } func InsertDefaultData() { models := []interface{}{ NewServiceTypeSearch(), NewPriorityLevelSearch(), NewSeveritySearch(), NewTimeSpentSearch(), } for _, model := range models { if id, ok := model.(InitDefaultData); ok { if err := id.InitDefaultData(); err != nil { logx.Errorf("InitDefaultData for table: %v, err :%v", model.(schema.Tabler).TableName(), err.Error()) } } } }