-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathcodex.go
65 lines (57 loc) · 1.69 KB
/
codex.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
64
65
// Package codex provides a Relational Algebra.
package codex
import (
"github.com/chuckpreslar/codex/managers"
"github.com/chuckpreslar/codex/nodes"
"github.com/chuckpreslar/codex/sql"
"github.com/chuckpreslar/codex/visitors"
)
// Expose sql packages Constraint types.
const (
NotNull = sql.NotNull
Unique = sql.Unique
PrimaryKey = sql.PrimaryKey
ForeignKey = sql.ForeignKey
Check = sql.Check
Default = sql.Default
)
// Expose sql packages Type types.
const (
String = sql.String
Text = sql.Text
Boolean = sql.Boolean
Integer = sql.Integer
Float = sql.Float
Decimal = sql.Decimal
Date = sql.Date
Time = sql.Time
Datetime = sql.Datetime
Timestamp = sql.Timestamp
)
// ToggleDebugMode toggles debugger variable for managers package.
func ToggleDebugMode() {
visitors.DEBUG = !visitors.DEBUG
}
// Table returns an Accessor from the managers package for
// generating SQL to interact with existing tables.
func Table(name string) managers.Accessor {
relation := nodes.Relation(name)
return func(name interface{}) *nodes.AttributeNode {
if _, ok := name.(string); ok {
return nodes.Attribute(nodes.Column(name), relation)
}
return nodes.Attribute(name, relation)
}
}
// CreateTable returns an AlterManager from the managers package
// for generating SQL to create new tables.
func CreateTable(name string) *managers.CreateManager {
relation := nodes.Relation(name)
return managers.Creation(relation)
}
// CreateTable returns an AlterManager from the managers package
// for generating SQL to alter existing tables.
func AlterTable(name string) *managers.AlterManager {
relation := nodes.Relation(name)
return managers.Alteration(relation)
}