-
-
Notifications
You must be signed in to change notification settings - Fork 4
/
types.go
63 lines (54 loc) · 1.77 KB
/
types.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/*
Copyright 2016-2023 Paolo Galeone. All right 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 igor
import (
"database/sql"
"log"
"github.com/lib/pq"
)
// DBModel is the interface implemented by every struct that is a relation on the DB
type DBModel interface {
//TableName returns the associated table name
TableName() string
}
// TxDB Interface to wrap methods common to *sql.Tx and *sql.DB
type TxDB 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
}
// Database is IGOR
type Database struct {
connection TxDB
db TxDB
rawRows *sql.Rows
tables []string
joinTables []string
models []DBModel
logger *log.Logger
cte string
cteSelectValues []interface{}
selectFields string
updateCreateValues []interface{}
updateCreateFields []string
whereValues []interface{}
whereFields []string
order string
limit int
offset int
varCount int
connectionString string
listener *pq.Listener
listenerCallbacks map[string]func(...string)
}