|
|
<?xml version="1.0" encoding="utf-8" ?><database>
<name>*dbname*</name> <create>true</create> <overwrite>false</overwrite>
<charset>utf8</charset>
<table>
<!--
Namespaced Key-Value Store for Application Configuration. - Keys are namespaced per appid. - E.g. (core, global_cache_gc_lastrun) -> 1385463286 --> <name>*dbprefix*appconfig</name>
<declaration>
<field> <name>appid</name> <type>text</type> <default></default> <notnull>true</notnull> <length>32</length> </field>
<field> <name>configkey</name> <type>text</type> <default></default> <notnull>true</notnull> <length>64</length> </field>
<field> <name>configvalue</name> <type>clob</type> <notnull>false</notnull> </field>
<index> <name>appconfig_appid_key_index</name> <primary>true</primary> <unique>true</unique> <field> <name>appid</name> <sorting>ascending</sorting> </field> <field> <name>configkey</name> <sorting>ascending</sorting> </field> </index> <index> <name>appconfig_config_key_index</name> <field> <name>configkey</name> <sorting>ascending</sorting> </field> </index> <index> <name>appconfig_appid_key</name> <field> <name>appid</name> <sorting>ascending</sorting> </field> </index>
</declaration>
</table>
<table>
<!--
Bidirectional Map for Storage Names and Storage Ids. - Assigns each storage name a unique storage id integer. - Long storage names are hashed. - E.g. local::/tmp/ <-> 2 - E.g. b5db994aa8c6625100e418406c798269 <-> 27 --> <name>*dbprefix*storages</name>
<declaration>
<field> <name>id</name> <type>text</type> <default></default> <notnull>false</notnull> <length>64</length> </field>
<field> <name>numeric_id</name> <type>integer</type> <default>0</default> <notnull>true</notnull> <autoincrement>1</autoincrement> <length>4</length> </field>
<field> <name>available</name> <type>integer</type> <default>1</default> <notnull>true</notnull> </field>
<field> <name>last_checked</name> <type>integer</type> </field>
<index> <name>storages_id_index</name> <unique>true</unique> <field> <name>id</name> <sorting>ascending</sorting> </field> </index>
</declaration>
</table>
<!-- a list of all mounted storage per user, populated on filesystem setup --> <table>
<name>*dbprefix*mounts</name>
<declaration>
<field> <name>id</name> <type>integer</type> <default>0</default> <notnull>true</notnull> <autoincrement>1</autoincrement> <length>4</length> </field>
<field> <name>storage_id</name> <type>integer</type> <notnull>true</notnull> </field>
<!-- fileid of the root of the mount, foreign key: oc_filecache.fileid --> <field> <name>root_id</name> <type>integer</type> <notnull>true</notnull> </field>
<field> <name>user_id</name> <type>text</type> <notnull>true</notnull> <length>64</length> </field>
<field> <name>mount_point</name> <type>text</type> <notnull>true</notnull> <length>4000</length> </field>
<index> <name>mounts_user_index</name> <unique>false</unique> <field> <name>user_id</name> <sorting>ascending</sorting> </field> </index>
<index> <name>mounts_storage_index</name> <unique>false</unique> <field> <name>storage_id</name> <sorting>ascending</sorting> </field> </index>
<index> <name>mounts_root_index</name> <unique>false</unique> <field> <name>root_id</name> <sorting>ascending</sorting> </field> </index>
<index> <name>mounts_user_root_index</name> <unique>true</unique> <field> <name>user_id</name> <sorting>ascending</sorting> </field> <field> <name>root_id</name> <sorting>ascending</sorting> </field> </index>
</declaration>
</table>
<table>
<!--
Bidirectional Map for Mimetypes and Mimetype Id - Assigns each mimetype (and supertype) a unique mimetype id integer. - E.g. application <-> 5 - E.g. application/pdf <-> 6 --> <name>*dbprefix*mimetypes</name>
<declaration>
<field> <name>id</name> <type>integer</type> <default>0</default> <notnull>true</notnull> <autoincrement>1</autoincrement> <length>4</length> </field>
<field> <name>mimetype</name> <type>text</type> <default></default> <notnull>true</notnull> <length>255</length> </field>
<index> <name>mimetype_id_index</name> <unique>true</unique> <field> <name>mimetype</name> <sorting>ascending</sorting> </field> </index>
</declaration>
</table>
<table>
<!--
Main file table containing one row for each directory and file. - Assigns a unique integer fileid to each file (and directory) - Assigns an etag to each file (and directory) - Caches various file/dir properties such as: - path (filename, e.g. files/combinatoricslib-2.0_doc.zip) - path_hash = md5(path) - name (basename, e.g. combinatoricslib-2.0_doc.zip) - size (for directories this is the sum of all contained file sizes) --> <name>*dbprefix*filecache</name>
<declaration>
<field> <name>fileid</name> <type>integer</type> <default>0</default> <notnull>true</notnull> <autoincrement>1</autoincrement> <length>4</length> </field>
<!-- Foreign Key storages::numeric_id --> <field> <name>storage</name> <type>integer</type> <default></default> <notnull>true</notnull> <length>4</length> </field>
<field> <name>path</name> <type>text</type> <default></default> <notnull>false</notnull> <length>4000</length> </field>
<field> <name>path_hash</name> <type>text</type> <default></default> <notnull>true</notnull> <length>32</length> </field>
<!-- Foreign Key filecache::fileid --> <field> <name>parent</name> <type>integer</type> <default></default> <notnull>true</notnull> <length>4</length> </field>
<field> <name>name</name> <type>text</type> <default></default> <notnull>false</notnull> <length>250</length> </field>
<!-- Foreign Key mimetypes::id --> <field> <name>mimetype</name> <type>integer</type> <default></default> <notnull>true</notnull> <length>4</length> </field>
<!-- Foreign Key mimetypes::id --> <field> <name>mimepart</name> <type>integer</type> <default></default> <notnull>true</notnull> <length>4</length> </field>
<field> <name>size</name> <type>integer</type> <default></default> <notnull>true</notnull> <length>8</length> </field>
<field> <name>mtime</name> <type>integer</type> <default></default> <notnull>true</notnull> <length>4</length> </field>
<field> <name>storage_mtime</name> <type>integer</type> <default></default> <notnull>true</notnull> <length>4</length> </field>
<field> <name>encrypted</name> <type>integer</type> <default>0</default> <notnull>true</notnull> <length>4</length> </field>
<field> <name>unencrypted_size</name> <type>integer</type> <default>0</default> <notnull>true</notnull> <length>8</length> </field>
<field> <name>etag</name> <type>text</type> <default></default> <notnull>false</notnull> <length>40</length> </field>
<field> <name>permissions</name> <type>integer</type> <default>0</default> <notnull>false</notnull> <length>4</length> </field>
<field> <name>checksum</name> <type>text</type> <default></default> <notnull>false</notnull> <length>255</length> </field>
<index> <name>fs_storage_path_hash</name> <unique>true</unique> <field> <name>storage</name> <sorting>ascending</sorting> </field> <field> <name>path_hash</name> <sorting>ascending</sorting> </field> </index>
<index> <name>fs_parent_name_hash</name> <field> <name>parent</name> <sorting>ascending</sorting> </field> <field> <name>name</name> <sorting>ascending</sorting> </field> </index>
<index> <name>fs_storage_mimetype</name> <field> <name>storage</name> <sorting>ascending</sorting> </field> <field> <name>mimetype</name> <sorting>ascending</sorting> </field> </index>
<index> <name>fs_storage_mimepart</name> <field> <name>storage</name> <sorting>ascending</sorting> </field> <field> <name>mimepart</name> <sorting>ascending</sorting> </field> </index>
<index> <name>fs_storage_size</name> <field> <name>storage</name> <sorting>ascending</sorting> </field> <field> <name>size</name> <sorting>ascending</sorting> </field> <field> <name>fileid</name> </field> </index>
</declaration>
</table>
<table>
<!--
Stores which groups have which users as members in an n:m relationship. - Maps group id (gid) to a set of users (uid) - Maps user id (uid) to a set of groups (gid) (but without index) --> <name>*dbprefix*group_user</name>
<declaration>
<!-- Foreign Key groups::gid --> <field> <name>gid</name> <type>text</type> <default></default> <notnull>true</notnull> <length>64</length> </field>
<!-- Foreign Key users::uid --> <field> <name>uid</name> <type>text</type> <default></default> <notnull>true</notnull> <length>64</length> </field>
<index> <name>gu_gid_uid_index</name> <primary>true</primary> <unique>true</unique> <field> <name>gid</name> <sorting>ascending</sorting> </field> <field> <name>uid</name> <sorting>ascending</sorting> </field> </index>
<index> <name>gu_uid_index</name> <field> <name>uid</name> <sorting>ascending</sorting> </field> </index>
</declaration>
</table>
<table>
<!--
Stores which groups have which users as admins in an n:m relationship. - Maps group id (gid) to a set of users (uid) - Maps user id (uid) to a set of groups (gid)
NOTE: This could (very likely) be reduced to a single bit in group_user instead of repeating varchars gid and uid here --> <name>*dbprefix*group_admin</name>
<declaration>
<!-- Foreign Key groups::gid --> <field> <name>gid</name> <type>text</type> <default></default> <notnull>true</notnull> <length>64</length> </field>
<!-- Foreign Key users::uid --> <field> <name>uid</name> <type>text</type> <default></default> <notnull>true</notnull> <length>64</length> </field> <index> <name>group_admin_uid</name> <field> <name>uid</name> <sorting>ascending</sorting> </field> </index>
<index> <name>ga_gid_uid_index</name> <primary>true</primary> <unique>true</unique> <field> <name>gid</name> <sorting>ascending</sorting> </field> <field> <name>uid</name> <sorting>ascending</sorting> </field> </index>
</declaration>
</table>
<table>
<!--
A simple list of groups. --> <name>*dbprefix*groups</name>
<declaration>
<field> <name>gid</name> <type>text</type> <default></default> <notnull>true</notnull> <length>64</length> </field>
<index> <name>groups_pKey</name> <primary>true</primary> <field> <name>gid</name> <sorting>ascending</sorting> </field> </index>
</declaration>
</table>
<table>
<!--
Namespaced Key-Value Store for User Preferences - Keys are namespaced per userid and appid. - E.g. (admin, files, cache_version) -> 5 --> <name>*dbprefix*preferences</name>
<declaration>
<!-- Foreign Key users::uid --> <field> <name>userid</name> <type>text</type> <default></default> <notnull>true</notnull> <length>64</length> </field>
<field> <name>appid</name> <type>text</type> <default></default> <notnull>true</notnull> <length>32</length> </field>
<field> <name>configkey</name> <type>text</type> <default></default> <notnull>true</notnull> <length>64</length> </field>
<field> <name>configvalue</name> <type>clob</type> <notnull>false</notnull> </field>
<index> <name>pref_userid_appid_key_index</name> <primary>true</primary> <unique>true</unique> <field> <name>userid</name> <sorting>ascending</sorting> </field> <field> <name>appid</name> <sorting>ascending</sorting> </field> <field> <name>configkey</name> <sorting>ascending</sorting> </field> </index>
</declaration>
</table>
<table>
<!--
WebDAV properties. --> <name>*dbprefix*properties</name>
<declaration>
<field> <name>id</name> <autoincrement>1</autoincrement> <type>integer</type> <default>0</default> <notnull>true</notnull> <length>4</length> </field>
<!-- Foreign Key users::uid --> <field> <name>userid</name> <type>text</type> <default></default> <notnull>true</notnull> <length>64</length> </field>
<field> <name>propertypath</name> <type>text</type> <default></default> <notnull>true</notnull> <length>255</length> </field>
<field> <name>propertyname</name> <type>text</type> <default></default> <notnull>true</notnull> <length>255</length> </field>
<field> <name>propertyvalue</name> <type>text</type> <notnull>true</notnull> <length>255</length> </field>
<index> <name>property_index</name> <field> <name>userid</name> <sorting>ascending</sorting> </field> </index>
</declaration>
</table>
<table>
<!--
Shares of all types (user-to-user, external-via-link, etc.) --> <name>*dbprefix*share</name>
<declaration>
<field> <name>id</name> <autoincrement>1</autoincrement> <type>integer</type> <default>0</default> <notnull>true</notnull> <length>4</length> </field>
<!-- Constant OCP\Share::SHARE_TYPE_* --> <field> <name>share_type</name> <type>integer</type> <default>0</default> <notnull>true</notnull> <length>1</length> </field>
<!-- Foreign Key users::uid or NULL --> <field> <name>share_with</name> <type>text</type> <default></default> <notnull>false</notnull> <length>255</length> </field>
<!-- Foreign Key users::uid --> <!-- This is the owner of the share
which does not have to be the initiator of the share --> <field> <name>uid_owner</name> <type>text</type> <default></default> <notnull>true</notnull> <length>64</length> </field>
<!-- Foreign Key users::uid --> <!-- This is the initiator of the share --> <field> <name>uid_initiator</name> <type>text</type> <default></default> <notnull>false</notnull> <length>64</length> </field>
<!-- Foreign Key share::id or NULL --> <field> <name>parent</name> <type>integer</type> <notnull>false</notnull> <length>4</length> </field>
<!-- E.g. file or folder --> <field> <name>item_type</name> <type>text</type> <default></default> <notnull>true</notnull> <length>64</length> </field>
<!-- Foreign Key filecache::fileid --> <field> <name>item_source</name> <type>text</type> <default></default> <notnull>false</notnull> <length>255</length> </field>
<field> <name>item_target</name> <type>text</type> <default></default> <notnull>false</notnull> <length>255</length> </field>
<!-- Foreign Key filecache::fileid --> <field> <name>file_source</name> <type>integer</type> <notnull>false</notnull> <length>4</length> </field>
<field> <name>file_target</name> <type>text</type> <default></default> <notnull>false</notnull> <length>512</length> </field>
<!-- Permission bitfield --> <field> <name>permissions</name> <type>integer</type> <default>0</default> <notnull>true</notnull> <length>1</length> </field>
<!-- Time of share creation --> <field> <name>stime</name> <type>integer</type> <default>0</default> <notnull>true</notnull> <length>8</length> </field>
<!-- Whether the receiver accepted the share, if share_with is set. --> <field> <name>accepted</name> <type>integer</type> <default>0</default> <notnull>true</notnull> <length>1</length> </field>
<!-- Time of share expiration --> <field> <name>expiration</name> <type>timestamp</type> <default></default> <notnull>false</notnull> </field>
<field> <name>token</name> <type>text</type> <default></default> <notnull>false</notnull> <length>32</length> </field>
<field> <name>mail_send</name> <type>integer</type> <default>0</default> <notnull>true</notnull> <length>1</length> </field>
<index> <name>item_share_type_index</name> <field> <name>item_type</name> <sorting>ascending</sorting> </field> <field> <name>share_type</name> <sorting>ascending</sorting> </field> </index> <index> <name>file_source_index</name> <field> <name>file_source</name> <sorting>ascending</sorting> </field> </index> <index> <name>token_index</name> <field> <name>token</name> <sorting>ascending</sorting> </field> </index> </declaration>
</table>
<table>
<!--
Scheduled background jobs. See OC\BackgroundJob\JobList. --> <name>*dbprefix*jobs</name>
<declaration>
<field> <name>id</name> <type>integer</type> <default>0</default> <notnull>true</notnull> <autoincrement>1</autoincrement> <unsigned>true</unsigned> <length>4</length> </field>
<field> <name>class</name> <type>text</type> <default></default> <notnull>true</notnull> <length>255</length> </field>
<field> <name>argument</name> <type>text</type> <default></default> <notnull>true</notnull> <length>4000</length> </field>
<field> <name>last_run</name> <type>integer</type> <default></default> <notnull>false</notnull> </field>
<index> <name>job_class_index</name> <field> <name>class</name> <sorting>ascending</sorting> </field> </index>
</declaration>
</table>
<table>
<!--
List of usernames, their display name and login password. --> <name>*dbprefix*users</name>
<declaration>
<field> <name>uid</name> <type>text</type> <default></default> <notnull>true</notnull> <length>64</length> </field>
<field> <name>displayname</name> <type>text</type> <default></default> <length>64</length> </field>
<field> <name>password</name> <type>text</type> <default></default> <notnull>true</notnull> <length>255</length> </field>
<index> <name>users_pKey</name> <primary>true</primary> <field> <name>uid</name> <sorting>ascending</sorting> </field> </index>
</declaration>
</table>
<table>
<!--
List of tags (category) + a unique tag id (id) per user (uid) and type. --> <name>*dbprefix*vcategory</name>
<declaration>
<field> <name>id</name> <type>integer</type> <default>0</default> <notnull>true</notnull> <autoincrement>1</autoincrement> <unsigned>true</unsigned> <length>4</length> </field>
<!-- Foreign Key users::uid --> <field> <name>uid</name> <type>text</type> <default></default> <notnull>true</notnull> <length>64</length> </field>
<field> <name>type</name> <type>text</type> <default></default> <notnull>true</notnull> <length>64</length> </field>
<field> <name>category</name> <type>text</type> <default></default> <notnull>true</notnull> <length>255</length> </field>
<index> <name>uid_index</name> <field> <name>uid</name> <sorting>ascending</sorting> </field> </index>
<index> <name>type_index</name> <field> <name>type</name> <sorting>ascending</sorting> </field> </index>
<index> <name>category_index</name> <field> <name>category</name> <sorting>ascending</sorting> </field> </index>
</declaration> </table>
<table>
<!--
Object-Tag associations per tag type. --> <name>*dbprefix*vcategory_to_object</name>
<declaration>
<field> <name>objid</name> <type>integer</type> <default>0</default> <notnull>true</notnull> <unsigned>true</unsigned> <length>4</length> </field>
<!-- Foreign Key vcategory::id --> <field> <name>categoryid</name> <type>integer</type> <default>0</default> <notnull>true</notnull> <unsigned>true</unsigned> <length>4</length> </field>
<field> <name>type</name> <type>text</type> <default></default> <notnull>true</notnull> <length>64</length> </field>
<index> <primary>true</primary> <unique>true</unique> <name>category_object_index</name> <field> <name>categoryid</name> <sorting>ascending</sorting> </field> <field> <name>objid</name> <sorting>ascending</sorting> </field> <field> <name>type</name> <sorting>ascending</sorting> </field> </index>
<index> <name>vcategory_objectd_index</name> <field> <name>objid</name> <sorting>ascending</sorting> </field> <field> <name>type</name> <sorting>ascending</sorting> </field> </index>
</declaration>
</table>
<table> <!--
List of system-wide tags --> <name>*dbprefix*systemtag</name>
<declaration>
<field> <name>id</name> <type>integer</type> <default>0</default> <notnull>true</notnull> <autoincrement>1</autoincrement> <unsigned>true</unsigned> <length>4</length> </field>
<!-- Tag name --> <field> <name>name</name> <type>text</type> <default></default> <notnull>true</notnull> <length>64</length> </field>
<!-- Visibility: 0 user-not-visible, 1 user-visible --> <field> <name>visibility</name> <type>integer</type> <default>1</default> <notnull>true</notnull> <length>1</length> </field>
<!-- Editable: 0 user-not-editable, 1 user-editable --> <field> <name>editable</name> <type>integer</type> <default>1</default> <notnull>true</notnull> <length>1</length> </field>
<index> <name>tag_ident</name> <unique>true</unique> <field> <name>name</name> <sorting>ascending</sorting> </field> <field> <name>visibility</name> <sorting>ascending</sorting> </field> <field> <name>editable</name> <sorting>ascending</sorting> </field> </index>
</declaration> </table>
<table>
<!--
System tag to object associations per object type. --> <name>*dbprefix*systemtag_object_mapping</name>
<declaration>
<!-- object id (ex: file id for files)--> <field> <name>objectid</name> <type>text</type> <default></default> <notnull>true</notnull> <length>64</length> </field>
<!-- object type (ex: "files")--> <field> <name>objecttype</name> <type>text</type> <default></default> <notnull>true</notnull> <length>64</length> </field>
<!-- Foreign Key systemtag::id --> <field> <name>systemtagid</name> <type>integer</type> <default>0</default> <notnull>true</notnull> <unsigned>true</unsigned> <length>4</length> </field>
<index> <unique>true</unique> <name>mapping</name> <field> <name>objecttype</name> <sorting>ascending</sorting> </field> <field> <name>objectid</name> <sorting>ascending</sorting> </field> <field> <name>systemtagid</name> <sorting>ascending</sorting> </field> </index>
</declaration>
</table>
<table>
<!--
Namespaced Key-Value Store for arbitrary data. - Keys are namespaced per userid and appid. - E.g. (admin, files, foo) -> bar --> <name>*dbprefix*privatedata</name>
<declaration>
<field> <name>keyid</name> <type>integer</type> <default>0</default> <notnull>true</notnull> <unsigned>true</unsigned> <length>4</length> <autoincrement>1</autoincrement> </field>
<!-- Foreign Key users::uid --> <field> <name>user</name> <type>text</type> <default></default> <notnull>true</notnull> <length>64</length> </field>
<field> <name>app</name> <type>text</type> <default></default> <notnull>true</notnull> <length>255</length> </field>
<field> <name>key</name> <type>text</type> <default></default> <notnull>true</notnull> <length>255</length> </field>
<field> <name>value</name> <type>text</type> <default></default> <notnull>true</notnull> <length>255</length> </field>
<index> <primary>true</primary> <unique>true</unique> <name>keyid_index</name> <field> <name>keyid</name> <sorting>ascending</sorting> </field> </index>
</declaration>
</table>
<table>
<!--
Table for storing transactional file locking --> <name>*dbprefix*file_locks</name>
<declaration>
<field> <name>id</name> <type>integer</type> <default>0</default> <notnull>true</notnull> <unsigned>true</unsigned> <length>4</length> <autoincrement>1</autoincrement> </field>
<field> <name>lock</name> <type>integer</type> <default>0</default> <notnull>true</notnull> <length>4</length> </field>
<field> <name>key</name> <type>text</type> <notnull>true</notnull> <length>64</length> </field>
<field> <name>ttl</name> <type>integer</type> <default>-1</default> <notnull>true</notnull> <length>4</length> </field>
<index> <primary>true</primary> <unique>true</unique> <name>lock_id_index</name> <field> <name>id</name> <sorting>ascending</sorting> </field> </index>
<index> <unique>true</unique> <name>lock_key_index</name> <field> <name>key</name> <sorting>ascending</sorting> </field> </index>
<index> <name>lock_ttl_index</name> <field> <name>ttl</name> <sorting>ascending</sorting> </field> </index>
</declaration>
</table>
<table> <!--
default place to store comment data --> <name>*dbprefix*comments</name>
<declaration>
<field> <name>id</name> <type>integer</type> <default>0</default> <notnull>true</notnull> <unsigned>true</unsigned> <length>4</length> <autoincrement>1</autoincrement> </field>
<field> <name>parent_id</name> <type>integer</type> <default>0</default> <notnull>true</notnull> <unsigned>true</unsigned> <length>4</length> </field>
<field> <name>topmost_parent_id</name> <type>integer</type> <default>0</default> <notnull>true</notnull> <unsigned>true</unsigned> <length>4</length> </field>
<field> <name>children_count</name> <type>integer</type> <default>0</default> <notnull>true</notnull> <unsigned>true</unsigned> <length>4</length> </field>
<field> <name>actor_type</name> <type>text</type> <default></default> <notnull>true</notnull> <length>64</length> </field>
<field> <name>actor_id</name> <type>text</type> <default></default> <notnull>true</notnull> <length>64</length> </field>
<field> <name>message</name> <type>clob</type> <default></default> <notnull>false</notnull> </field>
<field> <name>verb</name> <type>text</type> <default></default> <notnull>false</notnull> <length>64</length> </field>
<field> <name>creation_timestamp</name> <type>timestamp</type> <default></default> <notnull>false</notnull> </field>
<field> <name>latest_child_timestamp</name> <type>timestamp</type> <default></default> <notnull>false</notnull> </field>
<field> <name>object_type</name> <type>text</type> <default></default> <notnull>true</notnull> <length>64</length> </field>
<field> <name>object_id</name> <type>text</type> <default></default> <notnull>true</notnull> <length>64</length> </field>
<index> <name>comments_parent_id_index</name> <unique>false</unique> <field> <name>parent_id</name> <sorting>descending</sorting> </field> </index>
<index> <name>comments_topmost_parent_id_idx</name> <unique>false</unique> <field> <name>topmost_parent_id</name> <sorting>descending</sorting> </field> </index>
<index> <name>comments_object_index</name> <unique>false</unique> <field> <name>object_type</name> <sorting>ascending</sorting> </field> <field> <name>object_id</name> <sorting>ascending</sorting> </field> <field> <name>creation_timestamp</name> <sorting>descending</sorting> </field> </index>
<index> <name>comments_actor_index</name> <unique>false</unique> <field> <name>actor_type</name> <sorting>ascending</sorting> </field> <field> <name>actor_id</name> <sorting>ascending</sorting> </field> </index>
</declaration>
</table>
<table> <!--
default place to store per user and object read markers --> <name>*dbprefix*comments_read_markers</name>
<declaration>
<field> <name>user_id</name> <type>text</type> <default></default> <notnull>true</notnull> <length>64</length> </field>
<field> <name>marker_datetime</name> <type>timestamp</type> <default></default> <notnull>false</notnull> </field>
<field> <name>object_type</name> <type>text</type> <default></default> <notnull>true</notnull> <length>64</length> </field>
<field> <name>object_id</name> <type>text</type> <default></default> <notnull>true</notnull> <length>64</length> </field>
<index> <name>comments_marker_object_index</name> <unique>false</unique> <field> <name>object_type</name> <sorting>ascending</sorting> </field> <field> <name>object_id</name> <sorting>ascending</sorting> </field> </index>
<index> <name>comments_marker_index</name> <unique>true</unique> <field> <name>user_id</name> <sorting>descending</sorting> </field> <field> <name>object_type</name> <sorting>ascending</sorting> </field> <field> <name>object_id</name> <sorting>ascending</sorting> </field> </index>
</declaration>
</table>
<table> <!--
Encrypted credentials storage --> <name>*dbprefix*credentials</name>
<declaration>
<field> <name>user</name> <type>text</type> <default></default> <notnull>false</notnull> <length>64</length> </field>
<field> <name>identifier</name> <type>text</type> <notnull>true</notnull> <length>64</length> </field>
<field> <name>credentials</name> <type>clob</type> <notnull>false</notnull> </field>
<index> <name>credentials_user_id</name> <primary>true</primary> <unique>true</unique> <field> <name>user</name> <sorting>ascending</sorting> </field> <field> <name>identifier</name> <sorting>ascending</sorting> </field> </index>
<index> <name>credentials_user</name> <unique>false</unique> <field> <name>user</name> <sorting>ascending</sorting> </field> </index>
</declaration>
</table>
</database>
|