Skip to content

Commit

Permalink
Add MySQL schema definition
Browse files Browse the repository at this point in the history
  • Loading branch information
jcbrand committed Jun 14, 2012
1 parent d5f0871 commit 6dd9223
Show file tree
Hide file tree
Showing 2 changed files with 101 additions and 5 deletions.
23 changes: 18 additions & 5 deletions templates/ejabberd.cfg.in
Expand Up @@ -26,13 +26,17 @@
]},

{5280, ejabberd_http, [
http_bind,
web_admin
]}

]}.
web_admin,
{ request_handlers, [
{["http-bind"], mod_http_bind},
{["archive"], mod_archive_webview}
]}
]}
]}.

{auth_method, internal}.
{odbc_server, {mysql, "localhost", "ejabberd", "root", "secret"}}.
{odbc_keepalive_interval, 3600}.

{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}.
Expand Down Expand Up @@ -73,6 +77,15 @@
[
{mod_adhoc, []},
{mod_announce, [{access, announce}]},
{mod_archive_odbc, [
{database_type, "mysql"},
{default_auto_save, true},
{enforce_default_auto_save, false},
{default_expire, infinity},
{session_duration, 1800},
{enforce_min_expire, 0},
{enforce_max_expire, infinity}
]},
{mod_caps, []},
{mod_configure,[]},
{mod_disco, []},
Expand Down
83 changes: 83 additions & 0 deletions templates/mod_archive_odbc_mysql.sql
@@ -0,0 +1,83 @@
CREATE DATABASE IF NOT EXISTS ejabberd CHARACTER SET utf8 COLLATE utf8_general_ci;

USE ejabberd;

SET table_type=InnoDB;

CREATE TABLE archive_collections(id INTEGER NOT NULL AUTO_INCREMENT,
prev_id INTEGER,
next_id INTEGER,
us VARCHAR(2047) NOT NULL,
with_user VARCHAR(1023) NOT NULL,
with_server VARCHAR(1023) NOT NULL,
with_resource VARCHAR(1023) NOT NULL,
utc DATETIME NOT NULL,
change_by VARCHAR(3071),
change_utc DATETIME,
deleted TINYINT,
subject VARCHAR(1023),
thread VARCHAR(1023),
crypt TINYINT,
extra VARCHAR(32767),
PRIMARY KEY(id))
CHARACTER SET utf8
COLLATE utf8_general_ci;
CREATE INDEX IDX_archive_colls_with ON archive_collections(us(16),with_user(8),with_server(8),utc);
CREATE INDEX IDX_archive_colls_prev_id ON archive_collections(prev_id);
CREATE INDEX IDX_archive_colls_next_id ON archive_collections(next_id);
CREATE INDEX IDX_archive_colls_utc ON archive_collections(us(16),utc);
CREATE INDEX IDX_archive_colls_change ON archive_collections(deleted,change_utc);

CREATE TABLE archive_messages(id INTEGER NOT NULL AUTO_INCREMENT,
coll_id INTEGER NOT NULL,
utc DATETIME NOT NULL,
dir TINYINT,
body VARCHAR(63488),
name VARCHAR(1023),
PRIMARY KEY(id))
CHARACTER SET utf8
COLLATE utf8_general_ci;
CREATE INDEX IDX_archive_msgs_coll_id ON archive_messages(coll_id,utc);

CREATE TABLE archive_jid_prefs(us VARCHAR(2047) NOT NULL,
with_user VARCHAR(1023) NOT NULL,
with_server VARCHAR(1023) NOT NULL,
with_resource VARCHAR(1023) NOT NULL,
save TINYINT,
expire INTEGER,
otr TINYINT,
PRIMARY KEY (us(16),with_user(8),with_server(8),with_resource(8)))
CHARACTER SET utf8
COLLATE utf8_general_ci;

CREATE TABLE archive_global_prefs(us VARCHAR(2047) NOT NULL,
save TINYINT,
expire INTEGER,
otr TINYINT,
method_auto TINYINT,
method_local TINYINT,
method_manual TINYINT,
auto_save TINYINT,
PRIMARY KEY (us(16)))
CHARACTER SET utf8
COLLATE utf8_general_ci;

DELIMITER |

CREATE TRIGGER archive_collections_delete BEFORE DELETE ON archive_collections
FOR EACH ROW
BEGIN
DELETE FROM archive_messages WHERE coll_id = OLD.id;
END;
|

CREATE TRIGGER archive_collections_update BEFORE UPDATE ON archive_collections
FOR EACH ROW
BEGIN
IF NEW.deleted = 1 THEN
DELETE FROM archive_messages WHERE coll_id = NEW.id;
END IF;
END;
|

DELIMITER ;

0 comments on commit 6dd9223

Please sign in to comment.