webmcp

annotate libraries/mondelefant/mondelefant_native.autodoc.lua @ 498:e360b1933c78

Improve efficiency of table.insert in case of Lua 5.3 (do not use compatibility wrapper)
author jbe
date Sun Jul 23 03:43:49 2017 +0200 (2017-07-23)
parents 66d7a0ac9c9d
children
rev   line source
jbe@23 1
jbe@23 2 --[[--
jbe@23 3 db_handle, -- database handle, or nil in case of error
jbe@23 4 errmsg, -- error message
jbe@404 5 db_error = -- error object
jbe@23 6 mondelefant.connect{
jbe@40 7 conninfo = conninfo, -- string passed directly to PostgreSQL's libpq
jbe@23 8 host = host, -- hostname or directory with leading slash where Unix-domain socket resides
jbe@23 9 hostaddr = hostaddr, -- IPv4, or IPv6 address if supported
jbe@23 10 port = port, -- TCP port or socket file name extension
jbe@23 11 dbname = dbname, -- name of database to connect with
jbe@23 12 user = user, -- login name
jbe@23 13 password = password, -- password
jbe@23 14 connect_timeout = connect_timeout, -- seconds to wait for connection to be established. Zero or nil means infinite
jbe@23 15 ...
jbe@23 16 }
jbe@23 17
jbe@403 18 Opens a new database connection and returns a handle for that connection. You may chose to specify host, port, dbname, etc. as seperated arguments, or to use a "conninfo" string, which is directly passed to PostgreSQL's libpq. In the latter case, the "conninfo" string may also be passed directly as first argument to the connect function without supplying a table.
jbe@23 19
jbe@23 20 --]]--
jbe@23 21 -- implemented in mondelefant_native.c as
jbe@23 22 -- static int mondelefant_connect(lua_State *L)
jbe@23 23 --//--
jbe@23 24
jbe@23 25
jbe@23 26 --[[--
jbe@393 27 <db_handle>.fd -- file descriptor of underlaying database connection
jbe@393 28
jbe@393 29 The file descriptor number of the underlaying database connection. This value may be used in conjunction with :wait(0) and a select/poll system call to wait for several events at once.
jbe@393 30
jbe@393 31 --]]--
jbe@393 32 -- set/unset in mondelefant_native.c in
jbe@393 33 -- static int mondelefant_connect(lua_State *L) and
jbe@393 34 -- static int mondelefant_close(lua_State *L)
jbe@393 35 --//--
jbe@393 36
jbe@393 37
jbe@393 38 --[[--
jbe@23 39 <db_handle>:close()
jbe@23 40
jbe@23 41 Closes the database connection. This method may be called multiple times and is called automatically when the database handle is garbage collected.
jbe@23 42
jbe@23 43 --]]--
jbe@23 44 -- implemented in mondelefant_native.c as
jbe@23 45 -- static int mondelefant_conn_close(lua_State *L)
jbe@23 46 --//--
jbe@23 47
jbe@23 48
jbe@23 49 --[[--
jbe@23 50 status = -- true, if database connection has no malfunction
jbe@23 51 <db_handle>:is_ok()
jbe@23 52
jbe@23 53 Returns false, if the database connection has a malfunction, otherwise true.
jbe@23 54
jbe@23 55 --]]--
jbe@23 56 -- implemented in mondelefant_native.c as
jbe@23 57 -- static int mondelefant_conn_is_ok(lua_State *L)
jbe@23 58 --//--
jbe@23 59
jbe@23 60
jbe@23 61 --[[--
jbe@23 62 status = -- status string
jbe@23 63 <db_handle>:get_transaction_status()
jbe@23 64
jbe@23 65 Depending on the transaction status of the connection a string is returned:
jbe@23 66 - idle
jbe@23 67 - active
jbe@23 68 - intrans
jbe@23 69 - inerror
jbe@23 70 - unknown
jbe@23 71
jbe@23 72 --]]--
jbe@23 73 -- implemented in mondelefant_native.c as
jbe@23 74 -- static int mondelefant_conn_get_transaction_status(lua_State *L)
jbe@23 75 --//--
jbe@23 76
jbe@23 77
jbe@23 78 --[[--
jbe@397 79 db_error, -- error object, or nil in case of success or timeout
jbe@397 80 channel, -- notification channel name, or nil in case of timeout or no pending notify
jbe@397 81 payload, -- notification payload string
jbe@397 82 pid = -- process ID of notifying server process
jbe@397 83 <db_handle>:try_wait(
jbe@397 84 timeout -- number of seconds to wait, 0 = do not block, nil = wait infinitely
jbe@393 85 )
jbe@393 86
jbe@393 87 Waits for any NOTIFY event that is being LISTENed for. One or more LISTEN commands must have been sent previously with <db_handle>:query("LISTEN channel_name").
jbe@393 88
jbe@393 89 --]]--
jbe@393 90 -- implemented in mondelefant_native.c as
jbe@397 91 -- static int mondelefant_conn_try_wait(lua_State *L)
jbe@393 92 --//--
jbe@393 93
jbe@393 94
jbe@393 95 --[[--
jbe@440 96 db_list = -- database result being an empty list (or filled list)
jbe@440 97 <db_handle>:create_list(
jbe@440 98 tbl -- optional table to be converted to a filled list
jbe@440 99 )
jbe@23 100
jbe@440 101 Creates a database result representing a list. The used meta-table is "result_metatable". The attribute "_connection" is set to the database handle, and the attribute "_type" is set to "list". The attribute "_class" is initialized to the default class prototype "class_prototype" of the module.
jbe@23 102
jbe@23 103 --]]--
jbe@23 104 -- implemented in mondelefant_native.c as
jbe@23 105 -- static int mondelefant_conn_create_list(lua_State *L)
jbe@23 106 --//--
jbe@23 107
jbe@23 108
jbe@23 109 --[[--
jbe@23 110 db_object = -- database result being an empty object (row)
jbe@23 111 <db_handle>:create_object()
jbe@23 112
jbe@436 113 Creates an empty database result representing an object (row). The used meta-table is "result_metatable". The attribute "_connection" is set to the database handle, and the attribute "_type" is set to "object". The attribute "_class" is initialized to the default class prototype "class_prototype" of the module. Additionally the attribute "_col" is set to a proxy table, and the attributes "_data", "_dirty" and "_ref" are initialized with an empty table. TODO: Documentation of _data, _dirty and _ref.
jbe@23 114
jbe@23 115 --]]--
jbe@23 116 -- implemented in mondelefant_native.c as
jbe@23 117 -- static int mondelefant_conn_create_object(lua_State *L)
jbe@23 118 --//--
jbe@23 119
jbe@23 120
jbe@23 121 --[[--
jbe@23 122 quoted_encoded_string = -- encoded and quoted string
jbe@23 123 <db_handle>:quote_string(
jbe@23 124 unencoded_string -- string to encode and quote
jbe@23 125 )
jbe@23 126
jbe@23 127 Prepares a string to be used safely within SQL queries. This function is database dependent (see "backslash_quote" server configuration option for PostgreSQL).
jbe@23 128
jbe@23 129 --]]--
jbe@23 130 -- implemented in mondelefant_native.c as
jbe@23 131 -- static int mondelefant_conn_quote_string(lua_State *L)
jbe@23 132 --//--
jbe@23 133
jbe@23 134
jbe@23 135 --[[--
jbe@23 136 quoted_encoded_data = -- encoded and quoted data (as Lua string)
jbe@395 137 <db_handle>:quote_binary(
jbe@23 138 raw_data -- data (as Lua string) to encode and quote
jbe@23 139 )
jbe@23 140
jbe@23 141 Prepares a binary string to be used safely within SQL queries (as "bytea" type). This function is database dependent.
jbe@23 142
jbe@23 143 --]]--
jbe@23 144 -- implemented in mondelefant_native.c as
jbe@23 145 -- static int mondelefant_conn_quote_binary(lua_State *L)
jbe@23 146 --//--
jbe@23 147
jbe@23 148
jbe@23 149 --[[--
jbe@23 150 sql_string =
jbe@23 151 <db_handle>:assemble_command{
jbe@23 152 template, -- template string
jbe@23 153 arg1, -- value to be inserted
jbe@23 154 arg2, -- another value to be inserted
jbe@23 155 key1 = named_arg3, -- named value
jbe@23 156 key2 = named_arg4, -- another named value
jbe@23 157 ...
jbe@23 158 }
jbe@23 159
jbe@23 160 This method returns a SQL command by inserting the given values into the template string. Placeholders are "?" or "$", optionally followed by alphanumeric characters (including underscores). Placeholder characters can be escaped by writing them twice. A question-mark ("?") denotes a single value to be inserted, a dollar-sign ("$") denotes a list of sub-structures to be inserted. If alphanumeric characters are following the placeholder character, then these characters form a key, which is used to lookup the value to be used, otherwise values of numeric indicies are used.
jbe@23 161
jbe@23 162 TODO: documentation of input-converters
jbe@23 163
jbe@23 164 List of sub-structures are tables with an optional "sep" value, which is used as seperator. Each (numerically indexed) entry of this table is passed to a recursive call of "assemble_command" and concatenated with the given seperator, or ", ", if no seperator is given.
jbe@23 165
jbe@23 166 --]]--
jbe@23 167 -- implemented in mondelefant_native.c as
jbe@23 168 -- static int mondelefant_conn_assemble_command(lua_State *L)
jbe@23 169 --//--
jbe@23 170
jbe@23 171
jbe@23 172 --[[--
jbe@23 173 db_error, -- error object, or nil in case of success
jbe@23 174 result1, -- result of first command
jbe@23 175 result2, -- result of second command
jbe@23 176 ... =
jbe@23 177 <db_handle>:try_query(
jbe@23 178 command1, -- first command (to be processed by "assemble_command" method)
jbe@23 179 mode1, -- mode for first command: "list", "object" or "opt_object"
jbe@23 180 command2, -- second command (to be processed by "assemble_command" method)
jbe@23 181 mode2, -- mode for second command: "list", "object" or "opt_object"
jbe@23 182 ..
jbe@23 183 )
jbe@23 184
jbe@23 185 This method executes one or multiple SQL commands and returns its results. Each command is pre-processed by the "assemble_command" method of the database handle. A mode can be selected for each command: "list" for normal queries, "object" for queries which have exactly one result row, or "opt_object" which have one or zero result rows. If an error occurs, an error object is returned as first result value.
jbe@23 186
jbe@23 187 The mode of the last command may be ommitted and default to "list".
jbe@23 188
jbe@23 189 --]]--
jbe@23 190 -- implemented in mondelefant_native.c as
jbe@23 191 -- static int mondelefant_conn_try_query(lua_State *L)
jbe@23 192 --//--
jbe@23 193
jbe@23 194
jbe@23 195 --[[--
jbe@23 196 <db_error>:escalate()
jbe@23 197
jbe@397 198 Deprecated alias for error(<db_error>).
jbe@397 199
jbe@397 200 Note: Previous versions converted the error object to a string unless the database connection had "error_objects" set to true. The current implementation simply calls error(...). It is deprecated to use this method, use error(...) instead.
jbe@23 201
jbe@23 202 --]]--
jbe@23 203 -- implemented in mondelefant_native.c as
jbe@23 204 -- static int mondelefant_errorobject_escalate(lua_State *L)
jbe@23 205 --//--
jbe@23 206
jbe@23 207
jbe@23 208 --[[--
jbe@23 209 bool = -- true or false
jbe@23 210 <db_error>:is_kind_of(
jbe@23 211 error_code -- error code as used by this library
jbe@23 212 )
jbe@23 213
jbe@23 214 Checks, if a given error is of a given kind.
jbe@23 215
jbe@23 216 Example:
jbe@23 217 db_error:is_kind_of("IntegrityConstraintViolation")
jbe@23 218
jbe@23 219 --]]--
jbe@23 220 -- implemented in mondelefant_native.c as
jbe@23 221 -- static int mondelefant_errorobject_is_kind_of(lua_State *L)
jbe@23 222 --//--
jbe@23 223
jbe@23 224
jbe@23 225 --[[--
jbe@397 226 <db_error>.code -- hierarchical error code (separated by dots) in camel case
jbe@397 227
jbe@397 228 An error code in camel case notation with dots to separate hierarchy levels, e.g. "IntegrityConstraintViolation.UniqueViolation". See also <db_error>:is_kind_of(...).
jbe@397 229
jbe@397 230 --]]--
jbe@397 231 -- implemented in mondelefant_native.c as
jbe@397 232 -- static const char *mondelefant_translate_errcode(const char *pgcode)
jbe@397 233 --//--
jbe@397 234
jbe@397 235
jbe@397 236 --[[--
jbe@397 237 <db_error>.message -- string which summarizes the error
jbe@397 238
jbe@397 239 A string consisting of a single line (without CR/LF) describing the error. For more detailed information on a particular error, additional fields may be set in the <db_error> object. Refer to the source code of the mondelefant_translate_errcode C function in mondelefant_native.c.
jbe@397 240
jbe@397 241 --]]--
jbe@397 242 -- implemented in mondelefant_native.c
jbe@397 243 --//--
jbe@397 244
jbe@397 245
jbe@397 246 --[[--
jbe@397 247 channel, -- notification channel name, or nil in case of timeout or no pending notify
jbe@397 248 payload, -- notification payload string
jbe@397 249 pid = -- process ID of notifying server process
jbe@397 250 <db_handle>:wait(
jbe@397 251 timeout -- number of seconds to wait, 0 = do not block, nil = wait infinitely
jbe@397 252 )
jbe@397 253
jbe@397 254 Same as "try_wait" but raises an error, if a connection error occurred. Timeouts are reported by returning nil as first argument.
jbe@397 255
jbe@397 256 --]]--
jbe@397 257 -- implemented in mondelefant_native.c as
jbe@397 258 -- static int mondelefant_conn_wait(lua_State *L)
jbe@397 259 --//--
jbe@397 260
jbe@397 261
jbe@397 262 --[[--
jbe@23 263 result1, -- result of first command
jbe@23 264 result2, -- result of second command
jbe@23 265 ... =
jbe@23 266 <db_handle>:query(
jbe@23 267 command1, -- first command (to be processed by "assemble_command" method)
jbe@23 268 mode1, -- mode for first command: "list", "object" or "opt_object"
jbe@23 269 command2, -- second command (to be processed by "assemble_command" method)
jbe@23 270 mode2, -- mode for second command: "list", "object" or "opt_object"
jbe@23 271 ..
jbe@23 272 )
jbe@23 273
jbe@23 274 Same as "try_query" but raises error, when occurring.
jbe@23 275
jbe@23 276 --]]--
jbe@23 277 -- implemented in mondelefant_native.c as
jbe@23 278 -- static int mondelefant_conn_query(lua_State *L)
jbe@23 279 --//--
jbe@23 280
jbe@23 281
jbe@23 282 --[[--
jbe@23 283 db_list_or_object = -- first argument is returned
jbe@23 284 mondelefant.set_class(
jbe@23 285 db_list_or_object, -- database result list or object
jbe@23 286 db_class -- database class (model)
jbe@23 287 )
jbe@23 288
jbe@23 289 This function sets a class for a given database result list or object. If a result list is given as first argument, the class is also set for all elements of the list.
jbe@23 290
jbe@23 291 --]]--
jbe@23 292 -- implemented in mondelefant_native.c as
jbe@23 293 -- static int mondelefant_set_class(lua_State *L)
jbe@23 294 --//--
jbe@23 295
jbe@23 296
jbe@23 297 --[[--
jbe@23 298 db_class = -- new database class (model)
jbe@23 299 mondelefant.new_class()
jbe@23 300
jbe@23 301 This function creates a new class (model) used for database result lists or objects.
jbe@23 302
jbe@23 303 --]]--
jbe@23 304 -- implemented in mondelefant_native.c as
jbe@23 305 -- static int mondelefant_new_class(lua_State *L)
jbe@23 306 --//--
jbe@23 307
jbe@23 308
jbe@23 309 --[[--
jbe@23 310 reference_data = -- table with reference information
jbe@23 311 <db_class>:get_reference(
jbe@23 312 name -- reference name
jbe@23 313 )
jbe@23 314
jbe@272 315 This function performs a lookup for the given name in the "reference" table. Prototypes are used when lookup was unsuccessful.
jbe@23 316
jbe@23 317 --]]--
jbe@23 318 -- implemented in mondelefant_native.c as
jbe@23 319 -- static int mondelefant_class_get_reference(lua_State *L)
jbe@23 320 --//--
jbe@23 321
jbe@23 322
jbe@23 323 --[[--
jbe@23 324 reference_name = -- reference name
jbe@23 325 <db_class>:get_foreign_key_reference_name(
jbe@23 326 foreign_key -- foreign key
jbe@23 327 )
jbe@23 328
jbe@272 329 This function performs a lookup for the given name in the "foreign_keys" table. Prototypes are used when lookup was unsuccessful.
jbe@23 330
jbe@23 331 --]]--
jbe@23 332 -- implemented in mondelefant_native.c as
jbe@23 333 -- static int mondelefant_class_get_reference(lua_State *L)
jbe@23 334 --//--
jbe@23 335
jbe@416 336
jbe@416 337 --[[--
jbe@417 338 <db_object>._col -- proxy table mapping column names to their values
jbe@416 339
jbe@417 340 This attribute can be used to access column values directly (helpful if <db_class>:document_column is set).
jbe@417 341
jbe@417 342 NOTE: Neither pairs(...) nor ipairs(...) are implemented on this proxy table. Use <db_object>._column_info instead.
jbe@416 343
jbe@416 344 --]]--
jbe@416 345 -- implemented in mondelefant_native.c as
jbe@416 346 -- static const struct luaL_Reg mondelefant_columns_mt_functions[]
jbe@416 347 --//--
jbe@416 348

Impressum / About Us