1
0
mirror of https://github.com/astaxie/beego.git synced 2024-11-25 23:11:27 +00:00
Beego/orm/types.go

184 lines
6.0 KiB
Go
Raw Normal View History

2014-08-18 08:41:43 +00:00
// Copyright 2014 beego Author. All Rights Reserved.
2014-07-03 15:40:21 +00:00
//
2014-08-18 08:41:43 +00:00
// 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
2014-07-03 15:40:21 +00:00
//
2014-08-18 08:41:43 +00:00
// http://www.apache.org/licenses/LICENSE-2.0
2014-07-03 15:40:21 +00:00
//
2014-08-18 08:41:43 +00:00
// 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.
2013-07-30 12:32:38 +00:00
package orm
import (
"database/sql"
"reflect"
"time"
2013-07-30 12:32:38 +00:00
)
2014-01-17 15:28:54 +00:00
// database driver
2013-08-07 11:11:44 +00:00
type Driver interface {
Name() string
Type() DriverType
}
2014-01-17 15:28:54 +00:00
// field info
2013-07-30 12:32:38 +00:00
type Fielder interface {
String() string
FieldType() int
SetRaw(interface{}) error
RawValue() interface{}
}
2014-01-17 15:28:54 +00:00
// orm struct
2013-07-30 12:32:38 +00:00
type Ormer interface {
Read(interface{}, ...string) error
ReadOrCreate(interface{}, string, ...string) (bool, int64, error)
Insert(interface{}) (int64, error)
2014-01-06 03:07:03 +00:00
InsertMulti(int, interface{}) (int64, error)
Update(interface{}, ...string) (int64, error)
Delete(interface{}) (int64, error)
LoadRelated(interface{}, string, ...interface{}) (int64, error)
QueryM2M(interface{}, string) QueryM2Mer
2013-07-30 12:32:38 +00:00
QueryTable(interface{}) QuerySeter
Using(string) error
Begin() error
Commit() error
Rollback() error
Raw(string, ...interface{}) RawSeter
2013-08-07 11:11:44 +00:00
Driver() Driver
GetDB() dbQuerier
2013-07-30 12:32:38 +00:00
}
2014-01-17 15:28:54 +00:00
// insert prepared statement
2013-07-30 12:32:38 +00:00
type Inserter interface {
Insert(interface{}) (int64, error)
2013-07-30 12:32:38 +00:00
Close() error
}
2014-01-17 15:28:54 +00:00
// query seter
2013-07-30 12:32:38 +00:00
type QuerySeter interface {
Filter(string, ...interface{}) QuerySeter
Exclude(string, ...interface{}) QuerySeter
2013-08-07 11:11:44 +00:00
SetCond(*Condition) QuerySeter
Limit(interface{}, ...interface{}) QuerySeter
Offset(interface{}) QuerySeter
2013-07-30 12:32:38 +00:00
OrderBy(...string) QuerySeter
RelatedSel(...interface{}) QuerySeter
Count() (int64, error)
2013-10-11 22:57:14 +00:00
Exist() bool
2013-07-30 12:32:38 +00:00
Update(Params) (int64, error)
Delete() (int64, error)
PrepareInsert() (Inserter, error)
All(interface{}, ...string) (int64, error)
One(interface{}, ...string) error
2013-07-30 12:32:38 +00:00
Values(*[]Params, ...string) (int64, error)
ValuesList(*[]ParamsList, ...string) (int64, error)
ValuesFlat(*ParamsList, string) (int64, error)
RowsToMap(*Params, string, string) (int64, error)
RowsToStruct(interface{}, string, string) (int64, error)
2013-07-30 12:32:38 +00:00
}
2014-01-17 15:28:54 +00:00
// model to model query struct
type QueryM2Mer interface {
Add(...interface{}) (int64, error)
Remove(...interface{}) (int64, error)
Exist(interface{}) bool
Clear() (int64, error)
Count() (int64, error)
}
2014-01-17 15:28:54 +00:00
// raw query statement
2013-07-30 12:32:38 +00:00
type RawPreparer interface {
Exec(...interface{}) (sql.Result, error)
2013-07-30 12:32:38 +00:00
Close() error
}
2014-01-17 15:28:54 +00:00
// raw query seter
2013-07-30 12:32:38 +00:00
type RawSeter interface {
Exec() (sql.Result, error)
2013-08-07 11:11:44 +00:00
QueryRow(...interface{}) error
QueryRows(...interface{}) (int64, error)
SetArgs(...interface{}) RawSeter
Values(*[]Params, ...string) (int64, error)
ValuesList(*[]ParamsList, ...string) (int64, error)
ValuesFlat(*ParamsList, ...string) (int64, error)
RowsToMap(*Params, string, string) (int64, error)
RowsToStruct(interface{}, string, string) (int64, error)
2013-07-30 12:32:38 +00:00
Prepare() (RawPreparer, error)
}
2014-01-17 15:28:54 +00:00
// statement querier
2013-08-09 05:20:19 +00:00
type stmtQuerier interface {
Close() error
Exec(args ...interface{}) (sql.Result, error)
Query(args ...interface{}) (*sql.Rows, error)
QueryRow(args ...interface{}) *sql.Row
}
2014-01-17 15:28:54 +00:00
// db querier
2013-07-30 12:32:38 +00:00
type dbQuerier interface {
Prepare(query string) (*sql.Stmt, error)
Exec(query string, args ...interface{}) (sql.Result, error)
Query(query string, args ...interface{}) (*sql.Rows, error)
QueryRow(query string, args ...interface{}) *sql.Row
}
// type DB interface {
// Begin() (*sql.Tx, error)
// Prepare(query string) (stmtQuerier, error)
// Exec(query string, args ...interface{}) (sql.Result, error)
// Query(query string, args ...interface{}) (*sql.Rows, error)
// QueryRow(query string, args ...interface{}) *sql.Row
// }
2014-01-17 15:28:54 +00:00
// transaction beginner
2013-08-09 05:20:19 +00:00
type txer interface {
Begin() (*sql.Tx, error)
}
2014-01-17 15:28:54 +00:00
// transaction ending
2013-08-09 05:20:19 +00:00
type txEnder interface {
Commit() error
Rollback() error
}
2014-01-17 15:28:54 +00:00
// base database struct
2013-07-30 12:32:38 +00:00
type dbBaser interface {
Read(dbQuerier, *modelInfo, reflect.Value, *time.Location, []string) error
Insert(dbQuerier, *modelInfo, reflect.Value, *time.Location) (int64, error)
2014-01-06 03:07:03 +00:00
InsertMulti(dbQuerier, *modelInfo, reflect.Value, int, *time.Location) (int64, error)
InsertValue(dbQuerier, *modelInfo, bool, []string, []interface{}) (int64, error)
InsertStmt(stmtQuerier, *modelInfo, reflect.Value, *time.Location) (int64, error)
Update(dbQuerier, *modelInfo, reflect.Value, *time.Location, []string) (int64, error)
Delete(dbQuerier, *modelInfo, reflect.Value, *time.Location) (int64, error)
ReadBatch(dbQuerier, *querySet, *modelInfo, *Condition, interface{}, *time.Location, []string) (int64, error)
SupportUpdateJoin() bool
UpdateBatch(dbQuerier, *querySet, *modelInfo, *Condition, Params, *time.Location) (int64, error)
DeleteBatch(dbQuerier, *querySet, *modelInfo, *Condition, *time.Location) (int64, error)
Count(dbQuerier, *querySet, *modelInfo, *Condition, *time.Location) (int64, error)
OperatorSql(string) string
GenerateOperatorSql(*modelInfo, *fieldInfo, string, []interface{}, *time.Location) (string, []interface{})
GenerateOperatorLeftCol(*fieldInfo, string, *string)
2013-08-09 05:20:19 +00:00
PrepareInsert(dbQuerier, *modelInfo) (stmtQuerier, string, error)
ReadValues(dbQuerier, *querySet, *modelInfo, *Condition, []string, interface{}, *time.Location) (int64, error)
RowsTo(dbQuerier, *querySet, *modelInfo, *Condition, interface{}, string, string, *time.Location) (int64, error)
MaxLimit() uint64
TableQuote() string
ReplaceMarks(*string)
2013-08-11 14:27:45 +00:00
HasReturningID(*modelInfo, *string) bool
TimeFromDB(*time.Time, *time.Location)
TimeToDB(*time.Time, *time.Location)
2013-08-19 14:37:39 +00:00
DbTypes() map[string]string
2013-08-27 04:33:27 +00:00
GetTables(dbQuerier) (map[string]bool, error)
GetColumns(dbQuerier, string) (map[string][3]string, error)
ShowTablesQuery() string
ShowColumnsQuery(string) string
IndexExists(dbQuerier, string, string) bool
collectFieldValue(*modelInfo, *fieldInfo, reflect.Value, bool, *time.Location) (interface{}, error)
2013-07-30 12:32:38 +00:00
}