func SearchDB(DbModel *gorm.DB, Parms map[string]interface{}, SqlKey string, tableOrModel interface{}) interface{} { fmt.Println(tableOrModel) TableName := "" switch v := tableOrModel.(type) { case string: TableName = v case *string: if v == nil { return fmt.Errorf("表名指针不能为空") } TableName = *v default: if model, ok := v.(interface{ TableName() string }); ok { TableName = model.TableName() } else { t := reflect.TypeOf(v) if t.Kind() == reflect.Ptr { t = t.Elem() } TableName = t.Name() } }
if TableName == "" { return fmt.Errorf("表名不能为空") }
switch strings.ToLower(SqlKey) { case "insert": return handleInsert(DbModel, Parms, TableName) case "find": return handleFind(DbModel, Parms, TableName) case "update": return handleUpdate(DbModel, Parms, TableName) default: return fmt.Errorf("无效的操作类型: %s (支持: insert, find, update)", SqlKey) } }
|