aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/storage/ejabberd_init.lib.lua
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2011-01-07 03:18:40 +0000
committerMatthew Wild <mwild1@gmail.com>2011-01-07 03:18:40 +0000
commitc32601b14fb35115a64d977fcf8087bff572635e (patch)
tree91ab59c363f59a6eeee963f76b7bf321293f0182 /plugins/storage/ejabberd_init.lib.lua
parentb4101c237eccd6680323f37840b99263e7d85d47 (diff)
parent307c31a077ab9d56b21ba5f9d8f891d363636548 (diff)
downloadprosody-c32601b14fb35115a64d977fcf8087bff572635e.tar.gz
prosody-c32601b14fb35115a64d977fcf8087bff572635e.zip
Merge 0.8->trunk
Diffstat (limited to 'plugins/storage/ejabberd_init.lib.lua')
-rw-r--r--plugins/storage/ejabberd_init.lib.lua252
1 files changed, 0 insertions, 252 deletions
diff --git a/plugins/storage/ejabberd_init.lib.lua b/plugins/storage/ejabberd_init.lib.lua
deleted file mode 100644
index 91f8563b..00000000
--- a/plugins/storage/ejabberd_init.lib.lua
+++ /dev/null
@@ -1,252 +0,0 @@
-
-local t_concat = table.concat;
-local t_insert = table.insert;
-local pairs = pairs;
-local DBI = require "DBI";
-
-local sqlite = true;
-local q = {};
-
-local function set(key, val)
--- t_insert(q, "SET "..key.."="..val..";\n")
-end
-local function create_table(name, fields)
- t_insert(q, "CREATE TABLE ".."IF NOT EXISTS "..name.." (\n");
- for _, field in pairs(fields) do
- t_insert(q, "\t");
- field = t_concat(field, " ");
- if sqlite then
- if field:lower():match("^primary key *%(") then field = field:gsub("%(%d+%)", ""); end
- end
- t_insert(q, field);
- if _ ~= #fields then t_insert(q, ",\n"); end
- t_insert(q, "\n");
- end
- if sqlite then
- t_insert(q, ");\n");
- else
- t_insert(q, ") CHARACTER SET utf8;\n");
- end
-end
-local function create_index(name, index)
- --t_insert(q, "CREATE INDEX "..name.." ON "..index..";\n");
-end
-local function create_unique_index(name, index)
- --t_insert(q, "CREATE UNIQUE INDEX "..name.." ON "..index..";\n");
-end
-local function insert(target, value)
- t_insert(q, "INSERT INTO "..target.."\nVALUES "..value..";\n");
-end
-local function foreign_key(name, fkey, fname, fcol)
- t_insert(q, "ALTER TABLE `"..name.."` ADD FOREIGN KEY (`"..fkey.."`) REFERENCES `"..fname.."` (`"..fcol.."`) ON DELETE CASCADE;\n");
-end
-
-function build_query()
- q = {};
- set('table_type', 'InnoDB');
- create_table('hosts', {
- {'clusterid','integer','NOT','NULL'};
- {'host','varchar(250)','NOT','NULL','PRIMARY','KEY'};
- {'config','text','NOT','NULL'};
- });
- insert("hosts (clusterid, host, config)", "(1, 'localhost', '')");
- create_table('users', {
- {'host','varchar(250)','NOT','NULL'};
- {'username','varchar(250)','NOT','NULL'};
- {'password','text','NOT','NULL'};
- {'created_at','timestamp','NOT','NULL','DEFAULT','CURRENT_TIMESTAMP'};
- {'PRIMARY','KEY','(host, username)'};
- });
- create_table('last', {
- {'host','varchar(250)','NOT','NULL'};
- {'username','varchar(250)','NOT','NULL'};
- {'seconds','text','NOT','NULL'};
- {'state','text','NOT','NULL'};
- {'PRIMARY','KEY','(host, username)'};
- });
- create_table('rosterusers', {
- {'host','varchar(250)','NOT','NULL'};
- {'username','varchar(250)','NOT','NULL'};
- {'jid','varchar(250)','NOT','NULL'};
- {'nick','text','NOT','NULL'};
- {'subscription','character(1)','NOT','NULL'};
- {'ask','character(1)','NOT','NULL'};
- {'askmessage','text','NOT','NULL'};
- {'server','character(1)','NOT','NULL'};
- {'subscribe','text','NOT','NULL'};
- {'type','text'};
- {'created_at','timestamp','NOT','NULL','DEFAULT','CURRENT_TIMESTAMP'};
- {'PRIMARY','KEY','(host(75), username(75), jid(75))'};
- });
- create_index('i_rosteru_username', 'rosterusers(username)');
- create_index('i_rosteru_jid', 'rosterusers(jid)');
- create_table('rostergroups', {
- {'host','varchar(250)','NOT','NULL'};
- {'username','varchar(250)','NOT','NULL'};
- {'jid','varchar(250)','NOT','NULL'};
- {'grp','text','NOT','NULL'};
- {'PRIMARY','KEY','(host(75), username(75), jid(75))'};
- });
- --[[create_table('spool', {
- {'host','varchar(250)','NOT','NULL'};
- {'username','varchar(250)','NOT','NULL'};
- {'xml','text','NOT','NULL'};
- {'seq','BIGINT','UNSIGNED','NOT','NULL','AUTO_INCREMENT','UNIQUE'};
- {'created_at','timestamp','NOT','NULL','DEFAULT','CURRENT_TIMESTAMP'};
- {'PRIMARY','KEY','(host, username, seq)'};
- });]]
- create_table('vcard', {
- {'host','varchar(250)','NOT','NULL'};
- {'username','varchar(250)','NOT','NULL'};
- {'vcard','text','NOT','NULL'};
- {'created_at','timestamp','NOT','NULL','DEFAULT','CURRENT_TIMESTAMP'};
- {'PRIMARY','KEY','(host, username)'};
- });
- create_table('vcard_search', {
- {'host','varchar(250)','NOT','NULL'};
- {'username','varchar(250)','NOT','NULL'};
- {'lusername','varchar(250)','NOT','NULL'};
- {'fn','text','NOT','NULL'};
- {'lfn','varchar(250)','NOT','NULL'};
- {'family','text','NOT','NULL'};
- {'lfamily','varchar(250)','NOT','NULL'};
- {'given','text','NOT','NULL'};
- {'lgiven','varchar(250)','NOT','NULL'};
- {'middle','text','NOT','NULL'};
- {'lmiddle','varchar(250)','NOT','NULL'};
- {'nickname','text','NOT','NULL'};
- {'lnickname','varchar(250)','NOT','NULL'};
- {'bday','text','NOT','NULL'};
- {'lbday','varchar(250)','NOT','NULL'};
- {'ctry','text','NOT','NULL'};
- {'lctry','varchar(250)','NOT','NULL'};
- {'locality','text','NOT','NULL'};
- {'llocality','varchar(250)','NOT','NULL'};
- {'email','text','NOT','NULL'};
- {'lemail','varchar(250)','NOT','NULL'};
- {'orgname','text','NOT','NULL'};
- {'lorgname','varchar(250)','NOT','NULL'};
- {'orgunit','text','NOT','NULL'};
- {'lorgunit','varchar(250)','NOT','NULL'};
- {'PRIMARY','KEY','(host, lusername)'};
- });
- create_index('i_vcard_search_lfn ', 'vcard_search(lfn)');
- create_index('i_vcard_search_lfamily ', 'vcard_search(lfamily)');
- create_index('i_vcard_search_lgiven ', 'vcard_search(lgiven)');
- create_index('i_vcard_search_lmiddle ', 'vcard_search(lmiddle)');
- create_index('i_vcard_search_lnickname', 'vcard_search(lnickname)');
- create_index('i_vcard_search_lbday ', 'vcard_search(lbday)');
- create_index('i_vcard_search_lctry ', 'vcard_search(lctry)');
- create_index('i_vcard_search_llocality', 'vcard_search(llocality)');
- create_index('i_vcard_search_lemail ', 'vcard_search(lemail)');
- create_index('i_vcard_search_lorgname ', 'vcard_search(lorgname)');
- create_index('i_vcard_search_lorgunit ', 'vcard_search(lorgunit)');
- create_table('privacy_default_list', {
- {'host','varchar(250)','NOT','NULL'};
- {'username','varchar(250)'};
- {'name','varchar(250)','NOT','NULL'};
- {'PRIMARY','KEY','(host, username)'};
- });
- --[[create_table('privacy_list', {
- {'host','varchar(250)','NOT','NULL'};
- {'username','varchar(250)','NOT','NULL'};
- {'name','varchar(250)','NOT','NULL'};
- {'id','BIGINT','UNSIGNED','NOT','NULL','AUTO_INCREMENT','UNIQUE'};
- {'created_at','timestamp','NOT','NULL','DEFAULT','CURRENT_TIMESTAMP'};
- {'PRIMARY','KEY','(host, username, name)'};
- });]]
- create_table('privacy_list_data', {
- {'id','bigint'};
- {'t','character(1)','NOT','NULL'};
- {'value','text','NOT','NULL'};
- {'action','character(1)','NOT','NULL'};
- {'ord','NUMERIC','NOT','NULL'};
- {'match_all','boolean','NOT','NULL'};
- {'match_iq','boolean','NOT','NULL'};
- {'match_message','boolean','NOT','NULL'};
- {'match_presence_in','boolean','NOT','NULL'};
- {'match_presence_out','boolean','NOT','NULL'};
- });
- create_table('private_storage', {
- {'host','varchar(250)','NOT','NULL'};
- {'username','varchar(250)','NOT','NULL'};
- {'namespace','varchar(250)','NOT','NULL'};
- {'data','text','NOT','NULL'};
- {'created_at','timestamp','NOT','NULL','DEFAULT','CURRENT_TIMESTAMP'};
- {'PRIMARY','KEY','(host(75), username(75), namespace(75))'};
- });
- create_index('i_private_storage_username USING BTREE', 'private_storage(username)');
- create_table('roster_version', {
- {'username','varchar(250)','PRIMARY','KEY'};
- {'version','text','NOT','NULL'};
- });
- --[[create_table('pubsub_node', {
- {'host','text'};
- {'node','text'};
- {'parent','text'};
- {'type','text'};
- {'nodeid','bigint','auto_increment','primary','key'};
- });
- create_index('i_pubsub_node_parent', 'pubsub_node(parent(120))');
- create_unique_index('i_pubsub_node_tuple', 'pubsub_node(host(20), node(120))');
- create_table('pubsub_node_option', {
- {'nodeid','bigint'};
- {'name','text'};
- {'val','text'};
- });
- create_index('i_pubsub_node_option_nodeid', 'pubsub_node_option(nodeid)');
- foreign_key('pubsub_node_option', 'nodeid', 'pubsub_node', 'nodeid');
- create_table('pubsub_node_owner', {
- {'nodeid','bigint'};
- {'owner','text'};
- });
- create_index('i_pubsub_node_owner_nodeid', 'pubsub_node_owner(nodeid)');
- foreign_key('pubsub_node_owner', 'nodeid', 'pubsub_node', 'nodeid');
- create_table('pubsub_state', {
- {'nodeid','bigint'};
- {'jid','text'};
- {'affiliation','character(1)'};
- {'subscriptions','text'};
- {'stateid','bigint','auto_increment','primary','key'};
- });
- create_index('i_pubsub_state_jid', 'pubsub_state(jid(60))');
- create_unique_index('i_pubsub_state_tuple', 'pubsub_state(nodeid, jid(60))');
- foreign_key('pubsub_state', 'nodeid', 'pubsub_node', 'nodeid');
- create_table('pubsub_item', {
- {'nodeid','bigint'};
- {'itemid','text'};
- {'publisher','text'};
- {'creation','text'};
- {'modification','text'};
- {'payload','text'};
- });
- create_index('i_pubsub_item_itemid', 'pubsub_item(itemid(36))');
- create_unique_index('i_pubsub_item_tuple', 'pubsub_item(nodeid, itemid(36))');
- foreign_key('pubsub_item', 'nodeid', 'pubsub_node', 'nodeid');
- create_table('pubsub_subscription_opt', {
- {'subid','text'};
- {'opt_name','varchar(32)'};
- {'opt_value','text'};
- });
- create_unique_index('i_pubsub_subscription_opt', 'pubsub_subscription_opt(subid(32), opt_name(32))');]]
- return t_concat(q);
-end
-
-local function init(dbh)
- local q = build_query();
- for statement in q:gmatch("[^;]*;") do
- statement = statement:gsub("\n", ""):gsub("\t", " ");
- if sqlite then
- statement = statement:gsub("AUTO_INCREMENT", "AUTOINCREMENT");
- statement = statement:gsub("auto_increment", "autoincrement");
- end
- local result, err = DBI.Do(dbh, statement);
- if not result then
- print("X", result, err);
- print("Y", statement);
- end
- end
-end
-
-local _M = { init = init };
-return _M;