SchemaReverse module provides functionality to create Qore source code usable as an input for Schema::AbstractSchema (Schema.qm user module).
To use this module, use "%requires SchemaReverse" in your code.
All the public symbols in the module are defined in the SchemaReverse namespace.
Currently it can handle only database object types.
- sequences
- tables
- types
- views
- materialized views
- functions
- procedures
- packages
Not all database object types are available in all DBMS.
Simple example (to get one table definition):
%new-style
%requires SchemaReverse
Datasource ds("oracle:omq/omq@xbpx");
on_exit ds.commit();
TableReverse t = SchemaReverse::get_object("table", ds, "schema_reverse_t1");
string str = t.toString();
The output will be:
(
"columns" :
(
"id" :
(
"qore_type" : "number",
"comment" : "comment for id",
),
"foo" :
(
"qore_type" : "string",
"size" : 10,
"comment" : "comment for foo",
),
"bar" :
(
"qore_type" : "date",
"driver" :
(
"oracle" :
(
"native_type" : "date",
),
"pgsql" :
(
"native_type" : "date",
),
),
"comment" : "comment for bar",
),
),
"indexes" :
(
"schema_reverse_ix1" :
(
"columns" :
("id",),
),
),
)