]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - db/laconica.sql
add email notify flag for @-replies
[quix0rs-gnu-social.git] / db / laconica.sql
index 3f07b15f6e5c1368b5362bca60a38f241c902441..dd93a727b71f5504f168b8342483b7107984cbbb 100644 (file)
@@ -31,7 +31,7 @@ create table avatar (
 ) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;
 
 create table sms_carrier (
-    id integer auto_increment primary key comment 'primary key for SMS carrier',
+    id integer primary key comment 'primary key for SMS carrier',
     name varchar(64) unique key comment 'name of the carrier',
     email_pattern varchar(255) not null comment 'sprintf pattern for making an email address from a phone number',
     created datetime not null comment 'date this record was created',
@@ -47,6 +47,10 @@ create table user (
     email varchar(255) unique key comment 'email address for password recovery etc.',
     incomingemail varchar(255) unique key comment 'email address for post-by-email',
     emailnotifysub tinyint default 1 comment 'Notify by email of subscriptions',
+    emailnotifyfav tinyint default 1 comment 'Notify by email of favorites',
+    emailnotifynudge tinyint default 1 comment 'Notify by email of nudges',
+    emailnotifymsg tinyint default 1 comment 'Notify by email of direct messages',
+    emailnotifyattn tinyint default 1 comment 'Notify by email of @-replies',
     emailmicroid tinyint default 1 comment 'whether to publish email microid',
     language varchar(50) comment 'preferred language',
     timezone varchar(50) comment 'timezone',
@@ -63,6 +67,8 @@ create table user (
     smsemail varchar(255) comment 'built from sms and carrier',
     uri varchar(255) unique key comment 'universally unique identifier, usually a tag URI',
     autosubscribe tinyint default 0 comment 'automatically subscribe to users who subscribe to us',
+    urlshorteningservice varchar(50) default 'ur1.ca' comment 'service to use for auto-shortening URLs',
+    inboxed tinyint default 0 comment 'has an inbox been created for this user?',
     created datetime not null comment 'date this record was created',
     modified timestamp comment 'date this record was modified',
 
@@ -83,6 +89,8 @@ create table remote_profile (
 create table subscription (
     subscriber integer not null comment 'profile listening',
     subscribed integer not null comment 'profile being listened to',
+    jabber tinyint default 1 comment 'deliver jabber messages',
+    sms tinyint default 1 comment 'deliver sms messages',
     token varchar(255) comment 'authorization token',
     secret varchar(255) comment 'token secret',
     created datetime not null comment 'date this record was created',
@@ -90,7 +98,8 @@ create table subscription (
 
     constraint primary key (subscriber, subscribed),
     index subscription_subscriber_idx (subscriber),
-    index subscription_subscribed_idx (subscribed)
+    index subscription_subscribed_idx (subscribed),
+    index subscription_token_idx (token)
 ) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;
 
 create table notice (
@@ -250,7 +259,8 @@ create table notice_tag (
     created datetime not null comment 'date this record was created',
 
     constraint primary key (tag, notice_id),
-    index notice_tag_created_idx (created)
+    index notice_tag_created_idx (created),
+    index notice_tag_notice_id_idx (notice_id)
 ) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;
 
 /* Synching with foreign services */
@@ -268,12 +278,24 @@ create table foreign_user (
      service int not null comment 'foreign key to service' references foreign_service(id),
      uri varchar(255) not null unique key comment 'identifying URI',
      nickname varchar(255) comment 'nickname on foreign service',
+     created datetime not null comment 'date this record was created',
+     modified timestamp comment 'date this record was modified',
+
+     constraint primary key (id, service)
+) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;
+
+create table foreign_link (
      user_id int comment 'link to user on this system, if exists' references user (id),
+     foreign_id int comment 'link ' references foreign_user(id),
+     service int not null comment 'foreign key to service' references foreign_service(id),
      credentials varchar(255) comment 'authc credentials, typically a password',
+     noticesync tinyint not null default 1 comment 'notice synchronization, bit 1 = sync outgoing, bit 2 = sync incoming, bit 3 = filter local replies',
+     friendsync tinyint not null default 2 comment 'friend synchronization, bit 1 = sync outgoing, bit 2 = sync incoming',
+     profilesync tinyint not null default 1 comment 'profile synchronization, bit 1 = sync outgoing, bit 2 = sync incoming',
      created datetime not null comment 'date this record was created',
      modified timestamp comment 'date this record was modified',
 
-     constraint primary key (id, service),
+     constraint primary key (user_id, foreign_id, service),
      index foreign_user_user_id_idx (user_id)
 ) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;
 
@@ -297,4 +319,114 @@ create table invitation (
 
      index invitation_address_idx (address, address_type),
      index invitation_user_id_idx (user_id)
-) ENGINE=MyISAM CHARACTER SET utf8 COLLATE utf8_bin;
+) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;
+
+create table message (
+
+    id integer auto_increment primary key comment 'unique identifier',
+    uri varchar(255) unique key comment 'universally unique identifier',
+    from_profile integer not null comment 'who the message is from' references profile (id),
+    to_profile integer not null comment 'who the message is to' references profile (id),
+    content varchar(140) comment 'message content',
+    rendered text comment 'HTML version of the content',
+    url varchar(255) comment 'URL of any attachment (image, video, bookmark, whatever)',
+    created datetime not null comment 'date this record was created',
+    modified timestamp comment 'date this record was modified',
+    source varchar(32) comment 'source of comment, like "web", "im", or "clientname"',
+
+    index message_from_idx (from_profile),
+    index message_to_idx (to_profile),
+    index message_created_idx (created)
+) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;
+
+create table notice_inbox (
+
+    user_id integer not null comment 'user receiving the message' references user (id),
+    notice_id integer not null comment 'notice received' references notice (id),
+    created datetime not null comment 'date the notice was created',
+    source tinyint default 1 comment 'reason it is in the inbox; 1=subscription',
+
+    constraint primary key (user_id, notice_id),
+    index notice_inbox_notice_id_idx (notice_id)
+) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;
+
+create table profile_tag (
+   tagger integer not null comment 'user making the tag' references user (id),
+   tagged integer not null comment 'profile tagged' references profile (id),
+   tag varchar(64) not null comment 'hash tag associated with this notice',
+   modified timestamp comment 'date the tag was added',
+
+   constraint primary key (tagger, tagged, tag),
+   index profile_tag_modified_idx (modified),
+   index profile_tag_tagger_tag_idx (tagger, tag),
+   index profile_tag_tagged_idx (tagged)
+) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;
+
+create table profile_block (
+
+   blocker integer not null comment 'user making the block' references user (id),
+   blocked integer not null comment 'profile that is blocked' references profile (id),
+   modified timestamp comment 'date of blocking',
+
+   constraint primary key (blocker, blocked)
+
+) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;
+
+create table user_group (
+
+    id integer auto_increment primary key comment 'unique identifier',
+
+    nickname varchar(64) unique key comment 'nickname for addressing',
+    fullname varchar(255) comment 'display name',
+    homepage varchar(255) comment 'URL, cached so we dont regenerate',
+    description varchar(140) comment 'descriptive biography',
+    location varchar(255) comment 'related physical location, if any',
+
+    original_logo varchar(255) comment 'original size logo',
+    homepage_logo varchar(255) comment 'homepage (profile) size logo',
+    stream_logo varchar(255) comment 'stream-sized logo',
+    mini_logo varchar(255) comment 'mini logo',
+
+    created datetime not null comment 'date this record was created',
+    modified timestamp comment 'date this record was modified',
+
+    index user_group_nickname_idx (nickname)
+
+) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;
+
+create table group_member (
+
+    group_id integer not null comment 'foreign key to user_group' references user_group (id),
+    profile_id integer not null comment 'foreign key to profile table' references profile (id),
+    is_admin boolean default false comment 'is this user an admin?',
+
+    created datetime not null comment 'date this record was created',
+    modified timestamp comment 'date this record was modified',
+
+    constraint primary key (group_id, profile_id),
+    index group_member_profile_id_idx (profile_id),
+    index group_member_created_idx (created)
+
+) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;
+
+create table related_group (
+
+    group_id integer not null comment 'foreign key to user_group' references user_group (id),
+    related_group_id integer not null comment 'foreign key to user_group' references user_group (id),
+
+    created datetime not null comment 'date this record was created',
+
+    constraint primary key (group_id, related_group_id)
+
+) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;
+
+create table group_inbox (
+    group_id integer not null comment 'group receiving the message' references user_group (id),
+    notice_id integer not null comment 'notice received' references notice (id),
+    created datetime not null comment 'date the notice was created',
+
+    constraint primary key (group_id, notice_id),
+    index group_inbox_created_idx (created)
+
+) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;
+