My favorites | Sign in
Project Home Downloads Source
Checkout   Browse   Changes    
 
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
#define INT(x) COLUMN("integer", int, x, 0, 0)
#define INT_ARRAY(x, items) COLUMN_ARRAY("integer", int, x, 0, 0, items)
#define INT_(x) COLUMN_("integer", int, x, 0, 0)
#define INT_ARRAY_(x, items) COLUMN_ARRAY_("integer", int, x, 0, 0, items)

#define INT64(x) COLUMN("integer", int64, x, 0, 0)
#define INT64_ARRAY(x, items) COLUMN_ARRAY("integer", int64, x, 0, 0, items)
#define INT64_(x) COLUMN_("integer", int64, x, 0, 0)
#define INT64_ARRAY_(x, items) COLUMN_ARRAY_("integer", int64, x, 0, 0, items)

#define DOUBLE(x) COLUMN("real", double, x, 0, 0)
#define DOUBLE_ARRAY(x, items) COLUMN_ARRAY("real", double, x, 0, 0, items)
#define DOUBLE_(x) COLUMN_("real", double, x, 0, 0)
#define DOUBLE_ARRAY_(x, items) COLUMN_ARRAY_("real", double, x, 0, 0, items)

#define STRING(x, n) COLUMN("text", String, x, 0, 0)
#define STRING_ARRAY(x, n, items) COLUMN_ARRAY("text", String, x, 0, 0, items)
#define STRING_(x, n) COLUMN_("text", String, x, 0, 0)
#define STRING_ARRAY_(x, n, items) COLUMN_ARRAY_("text", String, x, 0, 0, items)

#define DATE(x) COLUMN("date", Date, x, 0, 0)
#define DATE_ARRAY(x, items) COLUMN_ARRAY("date", Date, x, 0, 0, items)
#define DATE_(x) COLUMN_("date", Date, x, 0, 0)
#define DATE_ARRAY_(x, items) COLUMN_ARRAY_("date", Date, x, 0, 0, items)

#define TIME(x) COLUMN("datetime", Time, x, 0, 0)
#define TIME_ARRAY(x, items) COLUMN_ARRAY("datetime", Time, x, 0, 0, items)
#define TIME_(x) COLUMN_("datetime", Time, x, 0, 0)
#define TIME_ARRAY_(x, items) COLUMN_ARRAY_("datetime", Time, x, 0, 0, items)

#define BOOL(x) COLUMN("text", bool, x, 0, 0)
#define BOOL_ARRAY(x, items) COLUMN_ARRAY("text", bool, x, 0, 0, items)
#define BOOL_(x) COLUMN_("text", bool, x, 0, 0)
#define BOOL_ARRAY_(x, items) COLUMN_ARRAY_("text", bool, x, 0, 0, items)

#define BLOB(x) COLUMN("blob", String, x, 0, 0)
#define BLOB_(x) COLUMN_("blob", String, x, 0, 0)

#define LONGRAW(x) COLUMN("blob", String, x, 0, 0)
#define LONGRAW_(x) COLUMN_("blob", String, x, 0, 0)

#ifndef PRIMARY_KEY
#define PRIMARY_KEY INLINE_ATTRIBUTE("primary key")
#endif

#define AUTO_INCREMENT
#define NOT_NULL INLINE_ATTRIBUTE("not null")

#define INDEX ATTRIBUTE("create index IDX_@x on @t(@c);", \
"drop index IDX_@x;")
#define UNIQUE ATTRIBUTE("create unique index IDX_@x on @t(@c);", \
"drop index IDX_@x;")

#ifndef REFERENCES
#define REFERENCES(x)
#endif

#ifndef REFERENCES_CASCADE
#define REFERENCES_CASCADE(x)
#endif

#ifndef REFERENCES_
#define REFERENCES_(n, x)
#endif

#ifndef REFERENCES_CASCADE_
#define REFERENCES_CASCADE_(n, x)
#endif

#define DUAL_PRIMARY_KEY(k1, k2) INLINE_ATTRIBUTE(", primary key (" #k1 ", " #k2 ")")

#define DUAL_UNIQUE(k1, k2) ATTRIBUTE("create unique index DQ_@t$" #k1 #k2 " on @t "\
"(" #k1 ", " #k2 ");",\
"drop index DQ_@t$" #k1 #k2 ";")

#define UNIQUE_LIST(u, l) ATTRIBUTE("create unique index UQ_@t$" #u " on @t "\
"(" l ");",\
"drop index UQ_@t$" #u ";")
#define INDEX_LIST(u, l) ATTRIBUTE("create index IDXL_@t$" #u " on @t "\
"(" l ");",\
"drop index IDXL_@t$" #u ";")

#define SQLCHECK(n, ct) ATTRIBUTE("alter table @t add constraint CHK_@t$" #n " check "\
"(" ct ");",\
"alter table @t drop constraint CHK_@t$" #n ";")


#define SQLDEFAULT(v) INLINE_ATTRIBUTE("default " #v)

#define TIMESTAMP(ts) SCHEMA("-- " ts "\n\n", NULL)

#define COMMENT(txt) SCHEMA("-- " #txt "\n", NULL)


#include <Sql/sch_model.h>

#undef INT
#undef INT_ARRAY
#undef INT_
#undef INT_ARRAY_

#undef INT64
#undef INT64_ARRAY
#undef INT64_
#undef INT64_ARRAY_

#undef DOUBLE
#undef DOUBLE_ARRAY
#undef DOUBLE_
#undef DOUBLE_ARRAY_

#undef STRING
#undef STRING_ARRAY
#undef STRING_
#undef STRING_ARRAY_

#undef DATE
#undef DATE_ARRAY
#undef DATE_
#undef DATE_ARRAY_

#undef TIME
#undef TIME_ARRAY
#undef TIME_
#undef TIME_ARRAY_

#undef BOOL
#undef BOOL_ARRAY
#undef BOOL_
#undef BOOL_ARRAY_

#undef BLOB
#undef BLOB_

#undef LONGRAW
#undef LONGRAW_

#undef PRIMARY_KEY
#undef AUTO_INCREMENT
#undef NOT_NULL
#undef INDEX
#undef UNIQUE

#undef REFERENCES
#undef REFERENCES_CASCADE
#undef REFERENCES_
#undef REFERENCES_CASCADE_

#undef DUAL_PRIMARY_KEY

#undef DUAL_UNIQUE

#undef UNIQUE_LIST
#undef INDEX_LIST

#undef SQLCHECK

#undef SQLDEFAULT
#undef TIMESTAMP
#undef COMMENT

Change log

r4269 by cxl on Dec 7, 2011   Diff
Sql: finalizing JoinRef and introspection
Go to: 
Project members, sign in to write a code review

Older revisions

r4174 by cxl on Nov 15, 2011   Diff
Sql: REFERENCES in .sch now can be
preset by Sql (prerequisite for
introspection)
r2780 by cxl on Oct 13, 2010   Diff
*Sqlite3: Schema fixes (thanks zsolt)
r1882 by cxl on Jan 12, 2010   Diff
Sqlite3 schema fix
All revisions of this file

File info

Size: 5168 bytes, 160 lines

File properties

svn:eol-style
native
Powered by Google Project Hosting