Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
二次元的罪恶王冠
beego
提交
54ef4766
B
beego
项目概览
二次元的罪恶王冠
/
beego
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
B
beego
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
54ef4766
编写于
7月 28, 2020
作者:
M
Ming Deng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add tag interfaces and remove log.go
上级
21f28165
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
160 addition
and
291 deletion
+160
-291
log.go
log.go
+0
-127
orm/orm.go
orm/orm.go
+23
-0
orm/types.go
orm/types.go
+1
-0
pkg/log.go
pkg/log.go
+0
-127
pkg/orm/model_utils_test.go
pkg/orm/model_utils_test.go
+62
-0
pkg/orm/models_info_m.go
pkg/orm/models_info_m.go
+1
-1
pkg/orm/orm_test.go
pkg/orm/orm_test.go
+18
-30
pkg/orm/types.go
pkg/orm/types.go
+52
-3
scripts/test.sh
scripts/test.sh
+3
-3
未找到文件。
log.go
已删除
100644 → 0
浏览文件 @
21f28165
// Copyright 2014 beego Author. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package
beego
import
(
"strings"
"github.com/astaxie/beego/logs"
)
// Log levels to control the logging output.
// Deprecated: use github.com/astaxie/beego/logs instead.
const
(
LevelEmergency
=
iota
LevelAlert
LevelCritical
LevelError
LevelWarning
LevelNotice
LevelInformational
LevelDebug
)
// BeeLogger references the used application logger.
// Deprecated: use github.com/astaxie/beego/logs instead.
var
BeeLogger
=
logs
.
GetBeeLogger
()
// SetLevel sets the global log level used by the simple logger.
// Deprecated: use github.com/astaxie/beego/logs instead.
func
SetLevel
(
l
int
)
{
logs
.
SetLevel
(
l
)
}
// SetLogFuncCall set the CallDepth, default is 3
// Deprecated: use github.com/astaxie/beego/logs instead.
func
SetLogFuncCall
(
b
bool
)
{
logs
.
SetLogFuncCall
(
b
)
}
// SetLogger sets a new logger.
// Deprecated: use github.com/astaxie/beego/logs instead.
func
SetLogger
(
adaptername
string
,
config
string
)
error
{
return
logs
.
SetLogger
(
adaptername
,
config
)
}
// Emergency logs a message at emergency level.
// Deprecated: use github.com/astaxie/beego/logs instead.
func
Emergency
(
v
...
interface
{})
{
logs
.
Emergency
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Alert logs a message at alert level.
// Deprecated: use github.com/astaxie/beego/logs instead.
func
Alert
(
v
...
interface
{})
{
logs
.
Alert
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Critical logs a message at critical level.
// Deprecated: use github.com/astaxie/beego/logs instead.
func
Critical
(
v
...
interface
{})
{
logs
.
Critical
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Error logs a message at error level.
// Deprecated: use github.com/astaxie/beego/logs instead.
func
Error
(
v
...
interface
{})
{
logs
.
Error
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Warning logs a message at warning level.
// Deprecated: use github.com/astaxie/beego/logs instead.
func
Warning
(
v
...
interface
{})
{
logs
.
Warning
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Warn compatibility alias for Warning()
// Deprecated: use github.com/astaxie/beego/logs instead.
func
Warn
(
v
...
interface
{})
{
logs
.
Warn
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Notice logs a message at notice level.
// Deprecated: use github.com/astaxie/beego/logs instead.
func
Notice
(
v
...
interface
{})
{
logs
.
Notice
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Informational logs a message at info level.
// Deprecated: use github.com/astaxie/beego/logs instead.
func
Informational
(
v
...
interface
{})
{
logs
.
Informational
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Info compatibility alias for Warning()
// Deprecated: use github.com/astaxie/beego/logs instead.
func
Info
(
v
...
interface
{})
{
logs
.
Info
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Debug logs a message at debug level.
// Deprecated: use github.com/astaxie/beego/logs instead.
func
Debug
(
v
...
interface
{})
{
logs
.
Debug
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Trace logs a message at trace level.
// compatibility alias for Warning()
// Deprecated: use github.com/astaxie/beego/logs instead.
func
Trace
(
v
...
interface
{})
{
logs
.
Trace
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
func
generateFmtStr
(
n
int
)
string
{
return
strings
.
Repeat
(
"%v "
,
n
)
}
orm/orm.go
浏览文件 @
54ef4766
...
...
@@ -124,18 +124,21 @@ func (o *orm) getFieldInfo(mi *modelInfo, name string) *fieldInfo {
}
// read data to model
// Deprecated: using pkg/orm. We will remove this method in v2.1.0
func
(
o
*
orm
)
Read
(
md
interface
{},
cols
...
string
)
error
{
mi
,
ind
:=
o
.
getMiInd
(
md
,
true
)
return
o
.
alias
.
DbBaser
.
Read
(
o
.
db
,
mi
,
ind
,
o
.
alias
.
TZ
,
cols
,
false
)
}
// read data to model, like Read(), but use "SELECT FOR UPDATE" form
// Deprecated: using pkg/orm. We will remove this method in v2.1.0
func
(
o
*
orm
)
ReadForUpdate
(
md
interface
{},
cols
...
string
)
error
{
mi
,
ind
:=
o
.
getMiInd
(
md
,
true
)
return
o
.
alias
.
DbBaser
.
Read
(
o
.
db
,
mi
,
ind
,
o
.
alias
.
TZ
,
cols
,
true
)
}
// Try to read a row from the database, or insert one if it doesn't exist
// Deprecated: using pkg/orm. We will remove this method in v2.1.0
func
(
o
*
orm
)
ReadOrCreate
(
md
interface
{},
col1
string
,
cols
...
string
)
(
bool
,
int64
,
error
)
{
cols
=
append
([]
string
{
col1
},
cols
...
)
mi
,
ind
:=
o
.
getMiInd
(
md
,
true
)
...
...
@@ -159,6 +162,7 @@ func (o *orm) ReadOrCreate(md interface{}, col1 string, cols ...string) (bool, i
}
// insert model data to database
// Deprecated: using pkg/orm. We will remove this method in v2.1.0
func
(
o
*
orm
)
Insert
(
md
interface
{})
(
int64
,
error
)
{
mi
,
ind
:=
o
.
getMiInd
(
md
,
true
)
id
,
err
:=
o
.
alias
.
DbBaser
.
Insert
(
o
.
db
,
mi
,
ind
,
o
.
alias
.
TZ
)
...
...
@@ -183,6 +187,7 @@ func (o *orm) setPk(mi *modelInfo, ind reflect.Value, id int64) {
}
// insert some models to database
// Deprecated: using pkg/orm. We will remove this method in v2.1.0
func
(
o
*
orm
)
InsertMulti
(
bulk
int
,
mds
interface
{})
(
int64
,
error
)
{
var
cnt
int64
...
...
@@ -218,6 +223,7 @@ func (o *orm) InsertMulti(bulk int, mds interface{}) (int64, error) {
}
// InsertOrUpdate data to database
// Deprecated: using pkg/orm. We will remove this method in v2.1.0
func
(
o
*
orm
)
InsertOrUpdate
(
md
interface
{},
colConflitAndArgs
...
string
)
(
int64
,
error
)
{
mi
,
ind
:=
o
.
getMiInd
(
md
,
true
)
id
,
err
:=
o
.
alias
.
DbBaser
.
InsertOrUpdate
(
o
.
db
,
mi
,
ind
,
o
.
alias
,
colConflitAndArgs
...
)
...
...
@@ -232,6 +238,7 @@ func (o *orm) InsertOrUpdate(md interface{}, colConflitAndArgs ...string) (int64
// update model to database.
// cols set the columns those want to update.
// Deprecated: using pkg/orm. We will remove this method in v2.1.0
func
(
o
*
orm
)
Update
(
md
interface
{},
cols
...
string
)
(
int64
,
error
)
{
mi
,
ind
:=
o
.
getMiInd
(
md
,
true
)
return
o
.
alias
.
DbBaser
.
Update
(
o
.
db
,
mi
,
ind
,
o
.
alias
.
TZ
,
cols
)
...
...
@@ -239,6 +246,7 @@ func (o *orm) Update(md interface{}, cols ...string) (int64, error) {
// delete model in database
// cols shows the delete conditions values read from. default is pk
// Deprecated: using pkg/orm. We will remove this method in v2.1.0
func
(
o
*
orm
)
Delete
(
md
interface
{},
cols
...
string
)
(
int64
,
error
)
{
mi
,
ind
:=
o
.
getMiInd
(
md
,
true
)
num
,
err
:=
o
.
alias
.
DbBaser
.
Delete
(
o
.
db
,
mi
,
ind
,
o
.
alias
.
TZ
,
cols
)
...
...
@@ -252,6 +260,7 @@ func (o *orm) Delete(md interface{}, cols ...string) (int64, error) {
}
// create a models to models queryer
// Deprecated: using pkg/orm. We will remove this method in v2.1.0
func
(
o
*
orm
)
QueryM2M
(
md
interface
{},
name
string
)
QueryM2Mer
{
mi
,
ind
:=
o
.
getMiInd
(
md
,
true
)
fi
:=
o
.
getFieldInfo
(
mi
,
name
)
...
...
@@ -274,6 +283,7 @@ func (o *orm) QueryM2M(md interface{}, name string) QueryM2Mer {
// for _,tag := range post.Tags{...}
//
// make sure the relation is defined in model struct tags.
// Deprecated: using pkg/orm. We will remove this method in v2.1.0
func
(
o
*
orm
)
LoadRelated
(
md
interface
{},
name
string
,
args
...
interface
{})
(
int64
,
error
)
{
_
,
fi
,
ind
,
qseter
:=
o
.
queryRelated
(
md
,
name
)
...
...
@@ -341,6 +351,7 @@ func (o *orm) LoadRelated(md interface{}, name string, args ...interface{}) (int
// qs := orm.QueryRelated(post,"Tag")
// qs.All(&[]*Tag{})
//
// Deprecated: using pkg/orm. We will remove this method in v2.1.0
func
(
o
*
orm
)
QueryRelated
(
md
interface
{},
name
string
)
QuerySeter
{
// is this api needed ?
_
,
_
,
_
,
qs
:=
o
.
queryRelated
(
md
,
name
)
...
...
@@ -423,6 +434,7 @@ func (o *orm) getRelQs(md interface{}, mi *modelInfo, fi *fieldInfo) *querySet {
// return a QuerySeter for table operations.
// table name can be string or struct.
// e.g. QueryTable("user"), QueryTable(&user{}) or QueryTable((*User)(nil)),
// Deprecated: using pkg/orm. We will remove this method in v2.1.0
func
(
o
*
orm
)
QueryTable
(
ptrStructOrTableName
interface
{})
(
qs
QuerySeter
)
{
var
name
string
if
table
,
ok
:=
ptrStructOrTableName
.
(
string
);
ok
{
...
...
@@ -443,6 +455,8 @@ func (o *orm) QueryTable(ptrStructOrTableName interface{}) (qs QuerySeter) {
}
// switch to another registered database driver by given name.
// Deprecated: using pkg/orm. We will remove this method in v2.1.0
// Using NewOrmUsingDB(name)
func
(
o
*
orm
)
Using
(
name
string
)
error
{
if
o
.
isTx
{
panic
(
fmt
.
Errorf
(
"<Ormer.Using> transaction has been start, cannot change db"
))
...
...
@@ -461,10 +475,12 @@ func (o *orm) Using(name string) error {
}
// begin transaction
// Deprecated: using pkg/orm. We will remove this method in v2.1.0
func
(
o
*
orm
)
Begin
()
error
{
return
o
.
BeginTx
(
context
.
Background
(),
nil
)
}
// Deprecated: using pkg/orm. We will remove this method in v2.1.0
func
(
o
*
orm
)
BeginTx
(
ctx
context
.
Context
,
opts
*
sql
.
TxOptions
)
error
{
if
o
.
isTx
{
return
ErrTxHasBegan
...
...
@@ -484,6 +500,7 @@ func (o *orm) BeginTx(ctx context.Context, opts *sql.TxOptions) error {
}
// commit transaction
// Deprecated: using pkg/orm. We will remove this method in v2.1.0
func
(
o
*
orm
)
Commit
()
error
{
if
!
o
.
isTx
{
return
ErrTxDone
...
...
@@ -499,6 +516,7 @@ func (o *orm) Commit() error {
}
// rollback transaction
// Deprecated: using pkg/orm. We will remove this method in v2.1.0
func
(
o
*
orm
)
Rollback
()
error
{
if
!
o
.
isTx
{
return
ErrTxDone
...
...
@@ -514,16 +532,19 @@ func (o *orm) Rollback() error {
}
// return a raw query seter for raw sql string.
// Deprecated: using pkg/orm. We will remove this method in v2.1.0
func
(
o
*
orm
)
Raw
(
query
string
,
args
...
interface
{})
RawSeter
{
return
newRawSet
(
o
,
query
,
args
)
}
// return current using database Driver
// Deprecated: using pkg/orm. We will remove this method in v2.1.0
func
(
o
*
orm
)
Driver
()
Driver
{
return
driver
(
o
.
alias
.
Name
)
}
// return sql.DBStats for current database
// Deprecated: using pkg/orm. We will remove this method in v2.1.0
func
(
o
*
orm
)
DBStats
()
*
sql
.
DBStats
{
if
o
.
alias
!=
nil
&&
o
.
alias
.
DB
!=
nil
{
stats
:=
o
.
alias
.
DB
.
DB
.
Stats
()
...
...
@@ -533,6 +554,7 @@ func (o *orm) DBStats() *sql.DBStats {
}
// NewOrm create new orm
// Deprecated: using pkg/orm. We will remove this method in v2.1.0
func
NewOrm
()
Ormer
{
BootStrap
()
// execute only once
...
...
@@ -545,6 +567,7 @@ func NewOrm() Ormer {
}
// NewOrmWithDB create a new ormer object with specify *sql.DB for query
// Deprecated: using pkg/orm. We will remove this method in v2.1.0
func
NewOrmWithDB
(
driverName
,
aliasName
string
,
db
*
sql
.
DB
)
(
Ormer
,
error
)
{
var
al
*
alias
...
...
orm/types.go
浏览文件 @
54ef4766
...
...
@@ -22,6 +22,7 @@ import (
)
// Driver define database driver
type
Driver
interface
{
Name
()
string
Type
()
DriverType
...
...
pkg/log.go
已删除
100644 → 0
浏览文件 @
21f28165
// Copyright 2014 beego Author. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package
beego
import
(
"strings"
"github.com/astaxie/beego/logs"
)
// Log levels to control the logging output.
// Deprecated: use github.com/astaxie/beego/logs instead.
const
(
LevelEmergency
=
iota
LevelAlert
LevelCritical
LevelError
LevelWarning
LevelNotice
LevelInformational
LevelDebug
)
// BeeLogger references the used application logger.
// Deprecated: use github.com/astaxie/beego/logs instead.
var
BeeLogger
=
logs
.
GetBeeLogger
()
// SetLevel sets the global log level used by the simple logger.
// Deprecated: use github.com/astaxie/beego/logs instead.
func
SetLevel
(
l
int
)
{
logs
.
SetLevel
(
l
)
}
// SetLogFuncCall set the CallDepth, default is 3
// Deprecated: use github.com/astaxie/beego/logs instead.
func
SetLogFuncCall
(
b
bool
)
{
logs
.
SetLogFuncCall
(
b
)
}
// SetLogger sets a new logger.
// Deprecated: use github.com/astaxie/beego/logs instead.
func
SetLogger
(
adaptername
string
,
config
string
)
error
{
return
logs
.
SetLogger
(
adaptername
,
config
)
}
// Emergency logs a message at emergency level.
// Deprecated: use github.com/astaxie/beego/logs instead.
func
Emergency
(
v
...
interface
{})
{
logs
.
Emergency
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Alert logs a message at alert level.
// Deprecated: use github.com/astaxie/beego/logs instead.
func
Alert
(
v
...
interface
{})
{
logs
.
Alert
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Critical logs a message at critical level.
// Deprecated: use github.com/astaxie/beego/logs instead.
func
Critical
(
v
...
interface
{})
{
logs
.
Critical
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Error logs a message at error level.
// Deprecated: use github.com/astaxie/beego/logs instead.
func
Error
(
v
...
interface
{})
{
logs
.
Error
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Warning logs a message at warning level.
// Deprecated: use github.com/astaxie/beego/logs instead.
func
Warning
(
v
...
interface
{})
{
logs
.
Warning
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Warn compatibility alias for Warning()
// Deprecated: use github.com/astaxie/beego/logs instead.
func
Warn
(
v
...
interface
{})
{
logs
.
Warn
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Notice logs a message at notice level.
// Deprecated: use github.com/astaxie/beego/logs instead.
func
Notice
(
v
...
interface
{})
{
logs
.
Notice
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Informational logs a message at info level.
// Deprecated: use github.com/astaxie/beego/logs instead.
func
Informational
(
v
...
interface
{})
{
logs
.
Informational
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Info compatibility alias for Warning()
// Deprecated: use github.com/astaxie/beego/logs instead.
func
Info
(
v
...
interface
{})
{
logs
.
Info
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Debug logs a message at debug level.
// Deprecated: use github.com/astaxie/beego/logs instead.
func
Debug
(
v
...
interface
{})
{
logs
.
Debug
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
// Trace logs a message at trace level.
// compatibility alias for Warning()
// Deprecated: use github.com/astaxie/beego/logs instead.
func
Trace
(
v
...
interface
{})
{
logs
.
Trace
(
generateFmtStr
(
len
(
v
)),
v
...
)
}
func
generateFmtStr
(
n
int
)
string
{
return
strings
.
Repeat
(
"%v "
,
n
)
}
pkg/orm/model_utils_test.go
0 → 100644
浏览文件 @
54ef4766
// Copyright 2020
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package
orm
import
(
"testing"
"github.com/stretchr/testify/assert"
)
type
Interface
struct
{
Id
int
Name
string
Index1
string
Index2
string
Unique1
string
Unique2
string
}
func
(
i
*
Interface
)
TableIndex
()
[][]
string
{
return
[][]
string
{{
"index1"
},
{
"index2"
}}
}
func
(
i
*
Interface
)
TableUnique
()
[][]
string
{
return
[][]
string
{{
"unique1"
},
{
"unique2"
}}
}
func
(
i
*
Interface
)
TableName
()
string
{
return
"INTERFACE_"
}
func
(
i
*
Interface
)
TableEngine
()
string
{
return
"innodb"
}
func
TestDbBase_GetTables
(
t
*
testing
.
T
)
{
RegisterModel
(
&
Interface
{})
mi
,
ok
:=
modelCache
.
get
(
"INTERFACE_"
)
assert
.
True
(
t
,
ok
)
assert
.
NotNil
(
t
,
mi
)
engine
:=
getTableEngine
(
mi
.
addrField
)
assert
.
Equal
(
t
,
"innodb"
,
engine
)
uniques
:=
getTableUnique
(
mi
.
addrField
)
assert
.
Equal
(
t
,
[][]
string
{{
"unique1"
},
{
"unique2"
}},
uniques
)
indexes
:=
getTableIndex
(
mi
.
addrField
)
assert
.
Equal
(
t
,
[][]
string
{{
"index1"
},
{
"index2"
}},
indexes
)
}
pkg/orm/models_info_m.go
浏览文件 @
54ef4766
...
...
@@ -29,7 +29,7 @@ type modelInfo struct {
model
interface
{}
fields
*
fields
manual
bool
addrField
reflect
.
Value
//store the original struct value
addrField
reflect
.
Value
//
store the original struct value
uniques
[]
string
isThrough
bool
}
...
...
pkg/orm/orm_test.go
浏览文件 @
54ef4766
...
...
@@ -297,16 +297,13 @@ func TestDataTypes(t *testing.T) {
vu
:=
e
.
Interface
()
switch
name
{
case
"Date"
:
vu
=
vu
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
)
.
Format
(
testDate
)
value
=
value
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
)
.
Format
(
testDate
)
case
"DateTime"
:
vu
=
vu
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
)
.
Format
(
testDateTime
)
value
=
value
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
)
.
Format
(
testDateTime
)
case
"Time"
:
vu
=
vu
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
)
.
Format
(
testTime
)
value
=
value
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
)
.
Format
(
testTime
)
assert
.
True
(
t
,
vu
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
)
.
Sub
(
value
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
))
<=
time
.
Second
)
break
default
:
assert
.
Equal
(
t
,
value
,
vu
)
}
throwFail
(
t
,
AssertIs
(
vu
==
value
,
true
),
value
,
vu
)
}
}
...
...
@@ -1662,18 +1659,14 @@ func TestRawQueryRow(t *testing.T) {
switch
col
{
case
"id"
:
throwFail
(
t
,
AssertIs
(
id
,
1
))
break
case
"time"
:
v
=
v
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
)
value
:=
dataValues
[
col
]
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
)
throwFail
(
t
,
AssertIs
(
v
,
value
,
testTime
))
case
"date"
:
v
=
v
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
)
value
:=
dataValues
[
col
]
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
)
throwFail
(
t
,
AssertIs
(
v
,
value
,
testDate
))
case
"datetime"
:
v
=
v
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
)
value
:=
dataValues
[
col
]
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
)
throwFail
(
t
,
AssertIs
(
v
,
value
,
testDateTime
))
assert
.
True
(
t
,
v
.
(
time
.
Time
)
.
Sub
(
value
)
<=
time
.
Second
)
break
default
:
throwFail
(
t
,
AssertIs
(
v
,
dataValues
[
col
]))
}
...
...
@@ -1746,16 +1739,13 @@ func TestQueryRows(t *testing.T) {
vu
:=
e
.
Interface
()
switch
name
{
case
"Time"
:
vu
=
vu
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
)
.
Format
(
testTime
)
value
=
value
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
)
.
Format
(
testTime
)
case
"Date"
:
vu
=
vu
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
)
.
Format
(
testDate
)
value
=
value
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
)
.
Format
(
testDate
)
case
"DateTime"
:
vu
=
vu
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
)
.
Format
(
testDateTime
)
value
=
value
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
)
.
Format
(
testDateTime
)
assert
.
True
(
t
,
vu
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
)
.
Sub
(
value
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
))
<=
time
.
Second
)
break
default
:
assert
.
Equal
(
t
,
value
,
vu
)
}
throwFail
(
t
,
AssertIs
(
vu
==
value
,
true
),
value
,
vu
)
}
var
datas2
[]
Data
...
...
@@ -1773,16 +1763,14 @@ func TestQueryRows(t *testing.T) {
vu
:=
e
.
Interface
()
switch
name
{
case
"Time"
:
vu
=
vu
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
)
.
Format
(
testTime
)
value
=
value
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
)
.
Format
(
testTime
)
case
"Date"
:
vu
=
vu
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
)
.
Format
(
testDate
)
value
=
value
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
)
.
Format
(
testDate
)
case
"DateTime"
:
vu
=
vu
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
)
.
Format
(
testDateTime
)
value
=
value
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
)
.
Format
(
testDateTime
)
assert
.
True
(
t
,
vu
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
)
.
Sub
(
value
.
(
time
.
Time
)
.
In
(
DefaultTimeLoc
))
<=
time
.
Second
)
break
default
:
assert
.
Equal
(
t
,
value
,
vu
)
}
throwFail
(
t
,
AssertIs
(
vu
==
value
,
true
),
value
,
vu
)
}
var
ids
[]
int
...
...
@@ -2193,8 +2181,8 @@ func TestInLine(t *testing.T) {
throwFail
(
t
,
AssertIs
(
il
.
Name
,
name
))
throwFail
(
t
,
AssertIs
(
il
.
Email
,
email
))
throwFail
(
t
,
AssertIs
(
il
.
Created
.
In
(
DefaultTimeLoc
),
inline
.
Created
.
In
(
DefaultTimeLoc
),
testDate
)
)
throwFail
(
t
,
AssertIs
(
il
.
Updated
.
In
(
DefaultTimeLoc
),
inline
.
Updated
.
In
(
DefaultTimeLoc
),
testDateTime
)
)
assert
.
True
(
t
,
il
.
Created
.
In
(
DefaultTimeLoc
)
.
Sub
(
inline
.
Created
.
In
(
DefaultTimeLoc
))
<=
time
.
Second
)
assert
.
True
(
t
,
il
.
Updated
.
In
(
DefaultTimeLoc
)
.
Sub
(
inline
.
Updated
.
In
(
DefaultTimeLoc
))
<=
time
.
Second
)
}
func
TestInLineOneToOne
(
t
*
testing
.
T
)
{
...
...
pkg/orm/types.go
浏览文件 @
54ef4766
...
...
@@ -21,6 +21,58 @@ import (
"time"
)
// TableNaming is usually used by model
// when you custom your table name, please implement this interfaces
// for example:
// type User struct {
// ...
// }
// func (u *User) TableName() string {
// return "USER_TABLE"
// }
type
TableNameI
interface
{
TableName
()
string
}
// TableEngineI is usually used by model
// when you want to use specific engine, like myisam, you can implement this interface
// for example:
// type User struct {
// ...
// }
// func (u *User) TableEngine() string {
// return "myisam"
// }
type
TableEngineI
interface
{
TableEngine
()
string
}
// TableIndexI is usually used by model
// when you want to create indexes, you can implement this interface
// for example:
// type User struct {
// ...
// }
// func (u *User) TableIndex() [][]string {
// return [][]string{{"Name"}}
// }
type
TableIndexI
interface
{
TableIndex
()
[][]
string
}
// TableUniqueI is usually used by model
// when you want to create unique indexes, you can implement this interface
// for example:
// type User struct {
// ...
// }
// func (u *User) TableUnique() [][]string {
// return [][]string{{"Email"}}
// }
type
TableUniqueI
interface
{
TableUnique
()
[][]
string
}
// Driver define database driver
type
Driver
interface
{
Name
()
string
...
...
@@ -145,9 +197,6 @@ type DQL interface {
QueryTable
(
ptrStructOrTableName
interface
{})
QuerySeter
QueryTableWithCtx
(
ctx
context
.
Context
,
ptrStructOrTableName
interface
{})
QuerySeter
// switch to another registered database driver by given name.
// Using(name string) error
DBStats
()
*
sql
.
DBStats
}
...
...
scripts/test.sh
浏览文件 @
54ef4766
#!/bin/bash
docker-compose
-f
test_docker_compose.yaml
up
-d
docker-compose
-f
"
$(
pwd
)
/scripts/test_docker_compose.yaml"
up
-d
export
ORM_DRIVER
=
mysql
export
TZ
=
UTC
export
ORM_SOURCE
=
"beego:test@tcp(localhost:13306)/orm_test?charset=utf8"
go
test
../...
go
test
"
$(
pwd
)
/..."
# clear all container
docker-compose
-f
test_docker_compose.yaml
down
docker-compose
-f
"
$(
pwd
)
/scripts/test_docker_compose.yaml"
down
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录