Commit a66ad216efcbfe28e4f095ffc68d29e2b8f08412
1 parent
e701df09
remove unneeded comment and sources
Showing
1 changed file
with
0 additions
and
148 deletions
Show diff stats
database/model/db_model.anubis
| @@ -6,19 +6,7 @@ | @@ -6,19 +6,7 @@ | ||
| 6 | * © David RENÉ | 6 | * © David RENÉ |
| 7 | */ | 7 | */ |
| 8 | 8 | ||
| 9 | - The HayamiKi (早見木) project | ||
| 10 | 9 | ||
| 11 | - Interfacing, generating and controling a database with Anubis | ||
| 12 | - | ||
| 13 | - | ||
| 14 | - Author: David René | ||
| 15 | - | ||
| 16 | - | ||
| 17 | - In order to generate such tools, DB_Model needs a formal | ||
| 18 | - description of the database. | ||
| 19 | - | ||
| 20 | - | ||
| 21 | - | ||
| 22 | *** (1.2) 'MaybeNull'. | 10 | *** (1.2) 'MaybeNull'. |
| 23 | 11 | ||
| 24 | This type scheme is isomorphic to 'Maybe', and is used for representing data which | 12 | This type scheme is isomorphic to 'Maybe', and is used for representing data which |
| @@ -33,69 +21,7 @@ public type MaybeNull($T): | @@ -33,69 +21,7 @@ public type MaybeNull($T): | ||
| 33 | 21 | ||
| 34 | Conversion tools between date, time and datetime in ISO-8601 format and 'Int' | 22 | Conversion tools between date, time and datetime in ISO-8601 format and 'Int' |
| 35 | (number of seconds since the epoch) are provided in 'library/tools/ISO-8601.anubis'. | 23 | (number of seconds since the epoch) are provided in 'library/tools/ISO-8601.anubis'. |
| 36 | - | ||
| 37 | - | ||
| 38 | - *** (1.3) 'HK_Model_Attr' (attributes of columns). | ||
| 39 | - | ||
| 40 | - Possible attributes of columns: (each column has a list of such attributes) | ||
| 41 | - | ||
| 42 | - | ||
| 43 | - | ||
| 44 | - | ||
| 45 | - | ||
| 46 | - | ||
| 47 | - | ||
| 48 | - | ||
| 49 | - Of course, 'NOT NULL' is not an alternative of 'HK_Model_Attr' because it is already coded into the | ||
| 50 | - database type itself (type 'HK_Model_Field' above). | ||
| 51 | - | ||
| 52 | - | ||
| 53 | - | ||
| 54 | - | ||
| 55 | - | ||
| 56 | - *** (3.7) 'DB_Model_Table' (describing a table). | ||
| 57 | - | ||
| 58 | - Description of a table: | ||
| 59 | - | ||
| 60 | - | ||
| 61 | - | ||
| 62 | - | ||
| 63 | - | ||
| 64 | - | ||
| 65 | - | ||
| 66 | - | ||
| 67 | 24 | ||
| 68 | - Description of a whole database: | ||
| 69 | - | ||
| 70 | - | ||
| 71 | -// list of all tables in the database | ||
| 72 | - | ||
| 73 | - | ||
| 74 | -//public define Maybe(String) convert_to_date (MaybeNull(ByteArray) b). | ||
| 75 | -//public define MaybeNull(String) convert_to_date_or_null (MaybeNull(ByteArray) b). | ||
| 76 | - | ||
| 77 | - *** (8.3.6) Converting 'integer?' and 'integer?_or_null' to and fro. | ||
| 78 | - | ||
| 79 | - The next functions are used for integer16, integer32 and integer. | ||
| 80 | - | ||
| 81 | -//public define Maybe(Int) convert_to_integer (MaybeNull(ByteArray) b). | ||
| 82 | -//public define MaybeNull(Int) convert_to_integer_or_null (MaybeNull(ByteArray) b). | ||
| 83 | - | ||
| 84 | - | ||
| 85 | - *** (8.3.7) Converting 'char/text' and 'char_or_null/text_or_null' to and fro. | ||
| 86 | - | ||
| 87 | - The same functions are used for 'text/text_or_null' and 'vartext/vartext_or_null'. | ||
| 88 | - | ||
| 89 | - Litteral texts must be 'prepared' before they can be included into | ||
| 90 | - SQL commands (this amounts to doubling the single quotes). | ||
| 91 | - | ||
| 92 | - public define MetaSQL_Prepared prepare_text (String t). | ||
| 93 | - public define MetaSQL_Prepared prepare_text_or_null (MaybeNull(String) t). | ||
| 94 | - | ||
| 95 | - Conversely, texts arrive from the database in the form of byte arrays which must be | ||
| 96 | - converted to strings. The two functions for converting to 'text' and to 'text_or_null' | ||
| 97 | - are almost the same one. The only difference is that 'null' is interpreted as an error in | ||
| 98 | - the case of 'text'. | ||
| 99 | 25 | ||
| 100 | --- That's all for the public part !---------------------------------------------------------------- | 26 | --- That's all for the public part !---------------------------------------------------------------- |
| 101 | 27 | ||
| @@ -144,77 +70,3 @@ define macro Maybe(String) | @@ -144,77 +70,3 @@ define macro Maybe(String) | ||
| 144 | } | 70 | } |
| 145 | }. | 71 | }. |
| 146 | 72 | ||
| 147 | - | ||
| 148 | - | ||
| 149 | - *** [2] Verifications concerning the description of the database and queries. | ||
| 150 | - | ||
| 151 | - | ||
| 152 | - | ||
| 153 | - define Bool | ||
| 154 | - has_forbidden_references | ||
| 155 | - ( | ||
| 156 | - String table_name, // the first 3 arguments concern the current table. | ||
| 157 | - MetaSQL_PrimKey pk, | ||
| 158 | - List(HK_Model_Column) columns, | ||
| 159 | - List(HK_Model_Column) forwards, // subsequent tables | ||
| 160 | - List(String) backwards // list of backwards table names | ||
| 161 | - ) = | ||
| 162 | - if columns is | ||
| 163 | - { | ||
| 164 | - [ ] then false, // no forbidden reference found | ||
| 165 | - [col1 . other_cols] then | ||
| 166 | - if is_forbidden_reference(table_name,col1,forwards,backwards) | ||
| 167 | - then true | ||
| 168 | - else has_forbidden_references(table_name,pk,other_cols,forwards,backwards) | ||
| 169 | - }. | ||
| 170 | - | ||
| 171 | - define Bool // returns 'true' if there is at least one forbidden cycle. | ||
| 172 | - has_forbidden_cycles | ||
| 173 | - ( | ||
| 174 | - String db_name, | ||
| 175 | - List(HK_Model_Column) tables, | ||
| 176 | - List(String) backwards // names of 'backwards' tables | ||
| 177 | - ) = | ||
| 178 | - if tables is | ||
| 179 | - { | ||
| 180 | - [ ] then false, // no forbidden cycle found | ||
| 181 | - [tab1 . other_tabs] then if tab1 is table(name1,pk1,cols1) then | ||
| 182 | - if has_forbidden_references(name1,pk1,cols1,other_tabs,backwards) | ||
| 183 | - then true | ||
| 184 | - else has_forbidden_cycles(db_name,other_tabs,[name1 . backwards]) | ||
| 185 | - }. | ||
| 186 | - | ||
| 187 | - define Bool | ||
| 188 | - is_forbidden_column_name | ||
| 189 | - ( | ||
| 190 | - String name | ||
| 191 | - ) = | ||
| 192 | - name = "id" | name = "metasqlcheck". | ||
| 193 | - | ||
| 194 | - define Bool | ||
| 195 | - has_forbidden_column_names | ||
| 196 | - ( | ||
| 197 | - HK_Model_Column tab | ||
| 198 | - ) = | ||
| 199 | - if tab is table(_,_,cols) then | ||
| 200 | - mapor((HK_Model_Column cs) |-> | ||
| 201 | - if cs is col(name,_,_) then is_forbidden_column_name(name), | ||
| 202 | - cols). | ||
| 203 | - | ||
| 204 | - define Bool | ||
| 205 | - has_forbidden_column_names | ||
| 206 | - ( | ||
| 207 | - DB_Model_DB db | ||
| 208 | - ) = | ||
| 209 | - if db is database(_,tables) then | ||
| 210 | - mapor(has_forbidden_column_names,tables). | ||
| 211 | - | ||
| 212 | - *** [3] Generating the target file. | ||
| 213 | - | ||
| 214 | - *** [3.1] Converting a database type into the corresponding Anubis type: | ||
| 215 | - | ||
| 216 | - | ||
| 217 | - | ||
| 218 | - | ||
| 219 | - | ||
| 220 | - |