-
Notifications
You must be signed in to change notification settings - Fork 40
/
columns.go
132 lines (122 loc) · 7.85 KB
/
columns.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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
// Code generated by gnorm, DO NOT EDIT!
package columns
import (
"database/sql"
"gnorm.org/gnorm/database/drivers/postgres/gnorm"
)
// Row represents a row from 'columns'.
type Row struct {
TableCatalog sql.NullString // table_catalog
TableSchema sql.NullString // table_schema
TableName sql.NullString // table_name
ColumnName sql.NullString // column_name
OrdinalPosition sql.NullInt64 // ordinal_position
ColumnDefault sql.NullString // column_default
IsNullable sql.NullString // is_nullable
DataType sql.NullString // data_type
CharacterMaximumLength sql.NullInt64 // character_maximum_length
CharacterOctetLength sql.NullInt64 // character_octet_length
NumericPrecision sql.NullInt64 // numeric_precision
NumericPrecisionRadix sql.NullInt64 // numeric_precision_radix
NumericScale sql.NullInt64 // numeric_scale
DatetimePrecision sql.NullInt64 // datetime_precision
IntervalType sql.NullString // interval_type
IntervalPrecision sql.NullInt64 // interval_precision
CharacterSetCatalog sql.NullString // character_set_catalog
CharacterSetSchema sql.NullString // character_set_schema
CharacterSetName sql.NullString // character_set_name
CollationCatalog sql.NullString // collation_catalog
CollationSchema sql.NullString // collation_schema
CollationName sql.NullString // collation_name
DomainCatalog sql.NullString // domain_catalog
DomainSchema sql.NullString // domain_schema
DomainName sql.NullString // domain_name
UdtCatalog sql.NullString // udt_catalog
UdtSchema sql.NullString // udt_schema
UdtName sql.NullString // udt_name
ScopeCatalog sql.NullString // scope_catalog
ScopeSchema sql.NullString // scope_schema
ScopeName sql.NullString // scope_name
MaximumCardinality sql.NullInt64 // maximum_cardinality
DtdIdentifier sql.NullString // dtd_identifier
IsSelfReferencing sql.NullString // is_self_referencing
IsIdentity sql.NullString // is_identity
IdentityGeneration sql.NullString // identity_generation
IdentityStart sql.NullString // identity_start
IdentityIncrement sql.NullString // identity_increment
IdentityMaximum sql.NullString // identity_maximum
IdentityMinimum sql.NullString // identity_minimum
IdentityCycle sql.NullString // identity_cycle
IsGenerated sql.NullString // is_generated
GenerationExpression sql.NullString // generation_expression
IsUpdatable sql.NullString // is_updatable
}
// Field values for every column in Columns.
var (
TableCatalogCol gnorm.SqlNullStringField = "table_catalog"
TableSchemaCol gnorm.SqlNullStringField = "table_schema"
TableNameCol gnorm.SqlNullStringField = "table_name"
ColumnNameCol gnorm.SqlNullStringField = "column_name"
OrdinalPositionCol gnorm.SqlNullInt64Field = "ordinal_position"
ColumnDefaultCol gnorm.SqlNullStringField = "column_default"
IsNullableCol gnorm.SqlNullStringField = "is_nullable"
DataTypeCol gnorm.SqlNullStringField = "data_type"
CharacterMaximumLengthCol gnorm.SqlNullInt64Field = "character_maximum_length"
CharacterOctetLengthCol gnorm.SqlNullInt64Field = "character_octet_length"
NumericPrecisionCol gnorm.SqlNullInt64Field = "numeric_precision"
NumericPrecisionRadixCol gnorm.SqlNullInt64Field = "numeric_precision_radix"
NumericScaleCol gnorm.SqlNullInt64Field = "numeric_scale"
DatetimePrecisionCol gnorm.SqlNullInt64Field = "datetime_precision"
IntervalTypeCol gnorm.SqlNullStringField = "interval_type"
IntervalPrecisionCol gnorm.SqlNullInt64Field = "interval_precision"
CharacterSetCatalogCol gnorm.SqlNullStringField = "character_set_catalog"
CharacterSetSchemaCol gnorm.SqlNullStringField = "character_set_schema"
CharacterSetNameCol gnorm.SqlNullStringField = "character_set_name"
CollationCatalogCol gnorm.SqlNullStringField = "collation_catalog"
CollationSchemaCol gnorm.SqlNullStringField = "collation_schema"
CollationNameCol gnorm.SqlNullStringField = "collation_name"
DomainCatalogCol gnorm.SqlNullStringField = "domain_catalog"
DomainSchemaCol gnorm.SqlNullStringField = "domain_schema"
DomainNameCol gnorm.SqlNullStringField = "domain_name"
UdtCatalogCol gnorm.SqlNullStringField = "udt_catalog"
UdtSchemaCol gnorm.SqlNullStringField = "udt_schema"
UdtNameCol gnorm.SqlNullStringField = "udt_name"
ScopeCatalogCol gnorm.SqlNullStringField = "scope_catalog"
ScopeSchemaCol gnorm.SqlNullStringField = "scope_schema"
ScopeNameCol gnorm.SqlNullStringField = "scope_name"
MaximumCardinalityCol gnorm.SqlNullInt64Field = "maximum_cardinality"
DtdIdentifierCol gnorm.SqlNullStringField = "dtd_identifier"
IsSelfReferencingCol gnorm.SqlNullStringField = "is_self_referencing"
IsIdentityCol gnorm.SqlNullStringField = "is_identity"
IdentityGenerationCol gnorm.SqlNullStringField = "identity_generation"
IdentityStartCol gnorm.SqlNullStringField = "identity_start"
IdentityIncrementCol gnorm.SqlNullStringField = "identity_increment"
IdentityMaximumCol gnorm.SqlNullStringField = "identity_maximum"
IdentityMinimumCol gnorm.SqlNullStringField = "identity_minimum"
IdentityCycleCol gnorm.SqlNullStringField = "identity_cycle"
IsGeneratedCol gnorm.SqlNullStringField = "is_generated"
GenerationExpressionCol gnorm.SqlNullStringField = "generation_expression"
IsUpdatableCol gnorm.SqlNullStringField = "is_updatable"
)
// Query retrieves rows from 'columns' as a slice of Row.
func Query(db gnorm.DB, where gnorm.WhereClause) ([]*Row, error) {
const origsqlstr = `SELECT
table_catalog, table_schema, table_name, column_name, ordinal_position, column_default, is_nullable, data_type, character_maximum_length, character_octet_length, numeric_precision, numeric_precision_radix, numeric_scale, datetime_precision, interval_type, interval_precision, character_set_catalog, character_set_schema, character_set_name, collation_catalog, collation_schema, collation_name, domain_catalog, domain_schema, domain_name, udt_catalog, udt_schema, udt_name, scope_catalog, scope_schema, scope_name, maximum_cardinality, dtd_identifier, is_self_referencing, is_identity, identity_generation, identity_start, identity_increment, identity_maximum, identity_minimum, identity_cycle, is_generated, generation_expression, is_updatable
FROM information_schema.columns WHERE (`
idx := 1
sqlstr := origsqlstr + where.String(&idx) + ") "
var vals []*Row
q, err := db.Query(sqlstr, where.Values()...)
if err != nil {
return nil, err
}
for q.Next() {
r := Row{}
err = q.Scan(&r.TableCatalog, &r.TableSchema, &r.TableName, &r.ColumnName, &r.OrdinalPosition, &r.ColumnDefault, &r.IsNullable, &r.DataType, &r.CharacterMaximumLength, &r.CharacterOctetLength, &r.NumericPrecision, &r.NumericPrecisionRadix, &r.NumericScale, &r.DatetimePrecision, &r.IntervalType, &r.IntervalPrecision, &r.CharacterSetCatalog, &r.CharacterSetSchema, &r.CharacterSetName, &r.CollationCatalog, &r.CollationSchema, &r.CollationName, &r.DomainCatalog, &r.DomainSchema, &r.DomainName, &r.UdtCatalog, &r.UdtSchema, &r.UdtName, &r.ScopeCatalog, &r.ScopeSchema, &r.ScopeName, &r.MaximumCardinality, &r.DtdIdentifier, &r.IsSelfReferencing, &r.IsIdentity, &r.IdentityGeneration, &r.IdentityStart, &r.IdentityIncrement, &r.IdentityMaximum, &r.IdentityMinimum, &r.IdentityCycle, &r.IsGenerated, &r.GenerationExpression, &r.IsUpdatable)
if err != nil {
return nil, err
}
vals = append(vals, &r)
}
return vals, nil
}