reduce boilerplate in tables.go
This commit is contained in:
parent
74193223ee
commit
1137d94d5b
@ -62,22 +62,22 @@ func createTables2(a qgen.Adapter, f func(table, charset, collation string, colu
|
||||
|
||||
createTable("users", mysqlPre, mysqlCol,
|
||||
[]tC{
|
||||
tC{"uid", "int", 0, false, true, ""},
|
||||
{"uid", "int", 0, false, true, ""},
|
||||
ccol("name", 100, ""),
|
||||
ccol("password", 100, ""),
|
||||
|
||||
ccol("salt", 80, "''"),
|
||||
tC{"group", "int", 0, false, false, ""}, // TODO: Make this a foreign key
|
||||
{"group", "int", 0, false, false, ""}, // TODO: Make this a foreign key
|
||||
bcol("active", false),
|
||||
bcol("is_super_admin", false),
|
||||
createdAt(),
|
||||
tC{"lastActiveAt", "datetime", 0, false, false, ""},
|
||||
{"lastActiveAt", "datetime", 0, false, false, ""},
|
||||
ccol("session", 200, "''"),
|
||||
//ccol("authToken", 200, "''"),
|
||||
ccol("last_ip", 200, "''"),
|
||||
tC{"profile_comments", "int", 0, false, false, "0"},
|
||||
tC{"who_can_convo", "int", 0, false, false, "0"},
|
||||
tC{"enable_embeds", "int", 0, false, false, "-1"},
|
||||
{"profile_comments", "int", 0, false, false, "0"},
|
||||
{"who_can_convo", "int", 0, false, false, "0"},
|
||||
{"enable_embeds", "int", 0, false, false, "-1"},
|
||||
ccol("email", 200, "''"),
|
||||
ccol("avatar", 100, "''"),
|
||||
text("message"),
|
||||
@ -87,80 +87,80 @@ func createTables2(a qgen.Adapter, f func(table, charset, collation string, colu
|
||||
ccol("url_name", 100, "''"),
|
||||
//text("pub_key"),
|
||||
|
||||
tC{"level", "smallint", 0, false, false, "0"},
|
||||
tC{"score", "int", 0, false, false, "0"},
|
||||
tC{"posts", "int", 0, false, false, "0"},
|
||||
tC{"bigposts", "int", 0, false, false, "0"},
|
||||
tC{"megaposts", "int", 0, false, false, "0"},
|
||||
tC{"topics", "int", 0, false, false, "0"},
|
||||
tC{"liked", "int", 0, false, false, "0"},
|
||||
{"level", "smallint", 0, false, false, "0"},
|
||||
{"score", "int", 0, false, false, "0"},
|
||||
{"posts", "int", 0, false, false, "0"},
|
||||
{"bigposts", "int", 0, false, false, "0"},
|
||||
{"megaposts", "int", 0, false, false, "0"},
|
||||
{"topics", "int", 0, false, false, "0"},
|
||||
{"liked", "int", 0, false, false, "0"},
|
||||
|
||||
// These two are to bound liked queries with little bits of information we know about the user to reduce the server load
|
||||
tC{"oldestItemLikedCreatedAt", "datetime", 0, false, false, ""}, // For internal use only, semantics may change
|
||||
tC{"lastLiked", "datetime", 0, false, false, ""}, // For internal use only, semantics may change
|
||||
{"oldestItemLikedCreatedAt", "datetime", 0, false, false, ""}, // For internal use only, semantics may change
|
||||
{"lastLiked", "datetime", 0, false, false, ""}, // For internal use only, semantics may change
|
||||
|
||||
//tC{"penalty_count","int",0,false,false,"0"},
|
||||
tC{"temp_group", "int", 0, false, false, "0"}, // For temporary groups, set this to zero when a temporary group isn't in effect
|
||||
//{"penalty_count","int",0,false,false,"0"},
|
||||
{"temp_group", "int", 0, false, false, "0"}, // For temporary groups, set this to zero when a temporary group isn't in effect
|
||||
},
|
||||
[]tK{
|
||||
tK{"uid", "primary", "", false},
|
||||
tK{"name", "unique", "", false},
|
||||
{"uid", "primary", "", false},
|
||||
{"name", "unique", "", false},
|
||||
},
|
||||
)
|
||||
|
||||
createTable("users_groups", mysqlPre, mysqlCol,
|
||||
[]tC{
|
||||
tC{"gid", "int", 0, false, true, ""},
|
||||
{"gid", "int", 0, false, true, ""},
|
||||
ccol("name", 100, ""),
|
||||
text("permissions"),
|
||||
text("plugin_perms"),
|
||||
bcol("is_mod", false),
|
||||
bcol("is_admin", false),
|
||||
bcol("is_banned", false),
|
||||
tC{"user_count", "int", 0, false, false, "0"}, // TODO: Implement this
|
||||
{"user_count", "int", 0, false, false, "0"}, // TODO: Implement this
|
||||
|
||||
ccol("tag", 50, "''"),
|
||||
},
|
||||
[]tK{
|
||||
tK{"gid", "primary", "", false},
|
||||
{"gid", "primary", "", false},
|
||||
},
|
||||
)
|
||||
|
||||
createTable("users_groups_promotions", mysqlPre, mysqlCol,
|
||||
[]tC{
|
||||
tC{"pid", "int", 0, false, true, ""},
|
||||
tC{"from_gid", "int", 0, false, false, ""},
|
||||
tC{"to_gid", "int", 0, false, false, ""},
|
||||
{"pid", "int", 0, false, true, ""},
|
||||
{"from_gid", "int", 0, false, false, ""},
|
||||
{"to_gid", "int", 0, false, false, ""},
|
||||
bcol("two_way", false), // If a user no longer meets the requirements for this promotion then they will be demoted if this flag is set
|
||||
|
||||
// Requirements
|
||||
tC{"level", "int", 0, false, false, ""},
|
||||
tC{"posts", "int", 0, false, false, "0"},
|
||||
tC{"minTime", "int", 0, false, false, ""}, // How long someone needs to have been in their current group before being promoted
|
||||
tC{"registeredFor", "int", 0, false, false, "0"}, // minutes
|
||||
{"level", "int", 0, false, false, ""},
|
||||
{"posts", "int", 0, false, false, "0"},
|
||||
{"minTime", "int", 0, false, false, ""}, // How long someone needs to have been in their current group before being promoted
|
||||
{"registeredFor", "int", 0, false, false, "0"}, // minutes
|
||||
},
|
||||
[]tK{
|
||||
tK{"pid", "primary", "", false},
|
||||
{"pid", "primary", "", false},
|
||||
},
|
||||
)
|
||||
|
||||
/*
|
||||
createTable("users_groups_promotions_scheduled","","",
|
||||
[]tC{
|
||||
tC{"prid","int",0,false,false,""},
|
||||
tC{"uid","int",0,false,false,""},
|
||||
tC{"runAt","datetime",0,false,false,""},
|
||||
{"prid","int",0,false,false,""},
|
||||
{"uid","int",0,false,false,""},
|
||||
{"runAt","datetime",0,false,false,""},
|
||||
},
|
||||
[]tblKey{
|
||||
[]tK{
|
||||
// TODO: Test to see that the compound primary key works
|
||||
tblKey{"prid,uid", "primary", "", false},
|
||||
{"prid,uid", "primary", "", false},
|
||||
},
|
||||
)
|
||||
*/
|
||||
|
||||
createTable("users_2fa_keys", mysqlPre, mysqlCol,
|
||||
[]tC{
|
||||
tC{"uid", "int", 0, false, false, ""},
|
||||
{"uid", "int", 0, false, false, ""},
|
||||
ccol("secret", 100, ""),
|
||||
ccol("scratch1", 50, ""),
|
||||
ccol("scratch2", 50, ""),
|
||||
@ -170,10 +170,10 @@ func createTables2(a qgen.Adapter, f func(table, charset, collation string, colu
|
||||
ccol("scratch6", 50, ""),
|
||||
ccol("scratch7", 50, ""),
|
||||
ccol("scratch8", 50, ""),
|
||||
tC{"createdAt", "createdAt", 0, false, false, ""},
|
||||
{"createdAt", "createdAt", 0, false, false, ""},
|
||||
},
|
||||
[]tblKey{
|
||||
tblKey{"uid", "primary", "", false},
|
||||
{"uid", "primary", "", false},
|
||||
},
|
||||
)
|
||||
|
||||
@ -185,8 +185,8 @@ func createTables2(a qgen.Adapter, f func(table, charset, collation string, colu
|
||||
// TODO: Shadow bans. We will probably have a CanShadowBan permission for this, as we *really* don't want people using this lightly.
|
||||
/*createTable("users_penalties","","",
|
||||
[]tC{
|
||||
tC{"uid","int",0,false,false,""},
|
||||
tC{"element_id","int",0,false,false,""},
|
||||
{"uid","int",0,false,false,""},
|
||||
{"element_id","int",0,false,false,""},
|
||||
ccol("element_type",50,""), //forum, profile?, and social_group. Leave blank for global.
|
||||
text("overrides","{}"),
|
||||
|
||||
@ -195,40 +195,40 @@ func createTables2(a qgen.Adapter, f func(table, charset, collation string, colu
|
||||
bcol("no_avatar",false), // Coming Soon. Should this be a perm override instead?
|
||||
|
||||
// Do we *really* need rate-limit penalty types? Are we going to be allowing bots or something?
|
||||
//tC{"posts_per_hour","int",0,false,false,"0"},
|
||||
//tC{"topics_per_hour","int",0,false,false,"0"},
|
||||
//tC{"posts_count","int",0,false,false,"0"},
|
||||
//tC{"topic_count","int",0,false,false,"0"},
|
||||
//tC{"last_hour","int",0,false,false,"0"}, // UNIX Time, as we don't need to do anything too fancy here. When an hour has elapsed since that time, reset the hourly penalty counters.
|
||||
//{"posts_per_hour","int",0,false,false,"0"},
|
||||
//{"topics_per_hour","int",0,false,false,"0"},
|
||||
//{"posts_count","int",0,false,false,"0"},
|
||||
//{"topic_count","int",0,false,false,"0"},
|
||||
//{"last_hour","int",0,false,false,"0"}, // UNIX Time, as we don't need to do anything too fancy here. When an hour has elapsed since that time, reset the hourly penalty counters.
|
||||
|
||||
tC{"issued_by","int",0,false,false,""},
|
||||
{"issued_by","int",0,false,false,""},
|
||||
createdAt("issued_at"),
|
||||
tC{"expires_at","datetime",0,false,false,""},
|
||||
{"expires_at","datetime",0,false,false,""},
|
||||
}, nil,
|
||||
)*/
|
||||
|
||||
createTable("users_groups_scheduler", "", "",
|
||||
[]tC{
|
||||
tC{"uid", "int", 0, false, false, ""},
|
||||
tC{"set_group", "int", 0, false, false, ""},
|
||||
{"uid", "int", 0, false, false, ""},
|
||||
{"set_group", "int", 0, false, false, ""},
|
||||
|
||||
tC{"issued_by", "int", 0, false, false, ""},
|
||||
{"issued_by", "int", 0, false, false, ""},
|
||||
createdAt("issued_at"),
|
||||
tC{"revert_at", "datetime", 0, false, false, ""},
|
||||
tC{"temporary", "boolean", 0, false, false, ""}, // special case for permanent bans to do the necessary bookkeeping, might be removed in the future
|
||||
{"revert_at", "datetime", 0, false, false, ""},
|
||||
{"temporary", "boolean", 0, false, false, ""}, // special case for permanent bans to do the necessary bookkeeping, might be removed in the future
|
||||
},
|
||||
[]tblKey{
|
||||
tblKey{"uid", "primary", "", false},
|
||||
{"uid", "primary", "", false},
|
||||
},
|
||||
)
|
||||
|
||||
// TODO: Can we use a piece of software dedicated to persistent queues for this rather than relying on the database for it?
|
||||
createTable("users_avatar_queue", "", "",
|
||||
[]tC{
|
||||
tC{"uid", "int", 0, false, false, ""}, // TODO: Make this a foreign key
|
||||
{"uid", "int", 0, false, false, ""}, // TODO: Make this a foreign key
|
||||
},
|
||||
[]tblKey{
|
||||
tblKey{"uid", "primary", "", false},
|
||||
{"uid", "primary", "", false},
|
||||
},
|
||||
)
|
||||
|
||||
@ -237,7 +237,7 @@ func createTables2(a qgen.Adapter, f func(table, charset, collation string, colu
|
||||
createTable("emails", "", "",
|
||||
[]tC{
|
||||
ccol("email", 200, ""),
|
||||
tC{"uid", "int", 0, false, false, ""}, // TODO: Make this a foreign key
|
||||
{"uid", "int", 0, false, false, ""}, // TODO: Make this a foreign key
|
||||
bcol("validated", false),
|
||||
ccol("token", 200, "''"),
|
||||
}, nil,
|
||||
@ -251,7 +251,7 @@ func createTables2(a qgen.Adapter, f func(table, charset, collation string, colu
|
||||
bcol("gtld", false),
|
||||
},
|
||||
[]tK{
|
||||
tK{"domain", "primary"},
|
||||
{"domain", "primary"},
|
||||
},
|
||||
)
|
||||
*/
|
||||
@ -260,8 +260,8 @@ func createTables2(a qgen.Adapter, f func(table, charset, collation string, colu
|
||||
createTable("password_resets", "", "",
|
||||
[]tC{
|
||||
ccol("email", 200, ""),
|
||||
tC{"uid", "int", 0, false, false, ""}, // TODO: Make this a foreign key
|
||||
ccol("validated", 200, ""), // Token given once the one-use token is consumed, used to prevent multiple people consuming the same one-use token
|
||||
{"uid", "int", 0, false, false, ""}, // TODO: Make this a foreign key
|
||||
ccol("validated", 200, ""), // Token given once the one-use token is consumed, used to prevent multiple people consuming the same one-use token
|
||||
ccol("token", 200, ""),
|
||||
createdAt(),
|
||||
}, nil,
|
||||
@ -269,159 +269,159 @@ func createTables2(a qgen.Adapter, f func(table, charset, collation string, colu
|
||||
|
||||
createTable("forums", mysqlPre, mysqlCol,
|
||||
[]tC{
|
||||
tC{"fid", "int", 0, false, true, ""},
|
||||
{"fid", "int", 0, false, true, ""},
|
||||
ccol("name", 100, ""),
|
||||
ccol("desc", 200, ""),
|
||||
ccol("tmpl", 200, "''"),
|
||||
bcol("active", true),
|
||||
tC{"order", "int", 0, false, false, "0"},
|
||||
tC{"topicCount", "int", 0, false, false, "0"},
|
||||
{"order", "int", 0, false, false, "0"},
|
||||
{"topicCount", "int", 0, false, false, "0"},
|
||||
ccol("preset", 100, "''"),
|
||||
tC{"parentID", "int", 0, false, false, "0"},
|
||||
{"parentID", "int", 0, false, false, "0"},
|
||||
ccol("parentType", 50, "''"),
|
||||
tC{"lastTopicID", "int", 0, false, false, "0"},
|
||||
tC{"lastReplyerID", "int", 0, false, false, "0"},
|
||||
{"lastTopicID", "int", 0, false, false, "0"},
|
||||
{"lastReplyerID", "int", 0, false, false, "0"},
|
||||
},
|
||||
[]tblKey{
|
||||
tblKey{"fid", "primary", "", false},
|
||||
{"fid", "primary", "", false},
|
||||
},
|
||||
)
|
||||
|
||||
createTable("forums_permissions", "", "",
|
||||
[]tC{
|
||||
tC{"fid", "int", 0, false, false, ""},
|
||||
tC{"gid", "int", 0, false, false, ""},
|
||||
{"fid", "int", 0, false, false, ""},
|
||||
{"gid", "int", 0, false, false, ""},
|
||||
ccol("preset", 100, "''"),
|
||||
text("permissions", "{}"),
|
||||
},
|
||||
[]tblKey{
|
||||
// TODO: Test to see that the compound primary key works
|
||||
tblKey{"fid,gid", "primary", "", false},
|
||||
{"fid,gid", "primary", "", false},
|
||||
},
|
||||
)
|
||||
|
||||
createTable("topics", mysqlPre, mysqlCol,
|
||||
[]tC{
|
||||
tC{"tid", "int", 0, false, true, ""},
|
||||
{"tid", "int", 0, false, true, ""},
|
||||
ccol("title", 100, ""), // TODO: Increase the max length to 200?
|
||||
text("content"),
|
||||
text("parsed_content"),
|
||||
createdAt(),
|
||||
tC{"lastReplyAt", "datetime", 0, false, false, ""},
|
||||
tC{"lastReplyBy", "int", 0, false, false, ""},
|
||||
tC{"lastReplyID", "int", 0, false, false, "0"},
|
||||
tC{"createdBy", "int", 0, false, false, ""}, // TODO: Make this a foreign key
|
||||
{"lastReplyAt", "datetime", 0, false, false, ""},
|
||||
{"lastReplyBy", "int", 0, false, false, ""},
|
||||
{"lastReplyID", "int", 0, false, false, "0"},
|
||||
{"createdBy", "int", 0, false, false, ""}, // TODO: Make this a foreign key
|
||||
bcol("is_closed", false),
|
||||
bcol("sticky", false),
|
||||
// TODO: Add an index for this
|
||||
tC{"parentID", "int", 0, false, false, "2"},
|
||||
{"parentID", "int", 0, false, false, "2"},
|
||||
ccol("ip", 200, "''"),
|
||||
tC{"postCount", "int", 0, false, false, "1"},
|
||||
tC{"likeCount", "int", 0, false, false, "0"},
|
||||
tC{"attachCount", "int", 0, false, false, "0"},
|
||||
tC{"words", "int", 0, false, false, "0"},
|
||||
tC{"views", "int", 0, false, false, "0"},
|
||||
//tC{"dayViews", "int", 0, false, false, "0"},
|
||||
tC{"weekEvenViews", "int", 0, false, false, "0"},
|
||||
tC{"weekOddViews", "int", 0, false, false, "0"},
|
||||
///tC{"weekViews", "int", 0, false, false, "0"},
|
||||
///tC{"lastWeekViews", "int", 0, false, false, "0"},
|
||||
//tC{"monthViews", "int", 0, false, false, "0"},
|
||||
{"postCount", "int", 0, false, false, "1"},
|
||||
{"likeCount", "int", 0, false, false, "0"},
|
||||
{"attachCount", "int", 0, false, false, "0"},
|
||||
{"words", "int", 0, false, false, "0"},
|
||||
{"views", "int", 0, false, false, "0"},
|
||||
//{"dayViews", "int", 0, false, false, "0"},
|
||||
{"weekEvenViews", "int", 0, false, false, "0"},
|
||||
{"weekOddViews", "int", 0, false, false, "0"},
|
||||
///{"weekViews", "int", 0, false, false, "0"},
|
||||
///{"lastWeekViews", "int", 0, false, false, "0"},
|
||||
//{"monthViews", "int", 0, false, false, "0"},
|
||||
// ? - A little hacky, maybe we could do something less likely to bite us with huge numbers of topics?
|
||||
// TODO: Add an index for this?
|
||||
//tC{"lastMonth", "datetime", 0, false, false, ""},
|
||||
//{"lastMonth", "datetime", 0, false, false, ""},
|
||||
ccol("css_class", 100, "''"),
|
||||
tC{"poll", "int", 0, false, false, "0"},
|
||||
{"poll", "int", 0, false, false, "0"},
|
||||
ccol("data", 200, "''"),
|
||||
},
|
||||
[]tK{
|
||||
tK{"tid", "primary", "", false},
|
||||
tK{"title", "fulltext", "", false},
|
||||
tK{"content", "fulltext", "", false},
|
||||
{"tid", "primary", "", false},
|
||||
{"title", "fulltext", "", false},
|
||||
{"content", "fulltext", "", false},
|
||||
},
|
||||
)
|
||||
|
||||
createTable("replies", mysqlPre, mysqlCol,
|
||||
[]tC{
|
||||
tC{"rid", "int", 0, false, true, ""}, // TODO: Rename to replyID?
|
||||
tC{"tid", "int", 0, false, false, ""}, // TODO: Rename to topicID?
|
||||
{"rid", "int", 0, false, true, ""}, // TODO: Rename to replyID?
|
||||
{"tid", "int", 0, false, false, ""}, // TODO: Rename to topicID?
|
||||
text("content"),
|
||||
text("parsed_content"),
|
||||
createdAt(),
|
||||
tC{"createdBy", "int", 0, false, false, ""}, // TODO: Make this a foreign key
|
||||
tC{"lastEdit", "int", 0, false, false, "0"},
|
||||
tC{"lastEditBy", "int", 0, false, false, "0"},
|
||||
tC{"lastUpdated", "datetime", 0, false, false, ""},
|
||||
{"createdBy", "int", 0, false, false, ""}, // TODO: Make this a foreign key
|
||||
{"lastEdit", "int", 0, false, false, "0"},
|
||||
{"lastEditBy", "int", 0, false, false, "0"},
|
||||
{"lastUpdated", "datetime", 0, false, false, ""},
|
||||
ccol("ip", 200, "''"),
|
||||
tC{"likeCount", "int", 0, false, false, "0"},
|
||||
tC{"attachCount", "int", 0, false, false, "0"},
|
||||
tC{"words", "int", 0, false, false, "1"}, // ? - replies has a default of 1 and topics has 0? why?
|
||||
{"likeCount", "int", 0, false, false, "0"},
|
||||
{"attachCount", "int", 0, false, false, "0"},
|
||||
{"words", "int", 0, false, false, "1"}, // ? - replies has a default of 1 and topics has 0? why?
|
||||
ccol("actionType", 20, "''"),
|
||||
tC{"poll", "int", 0, false, false, "0"},
|
||||
{"poll", "int", 0, false, false, "0"},
|
||||
},
|
||||
[]tK{
|
||||
tK{"rid", "primary", "", false},
|
||||
tK{"content", "fulltext", "", false},
|
||||
{"rid", "primary", "", false},
|
||||
{"content", "fulltext", "", false},
|
||||
},
|
||||
)
|
||||
|
||||
createTable("attachments", mysqlPre, mysqlCol,
|
||||
[]tC{
|
||||
tC{"attachID", "int", 0, false, true, ""},
|
||||
tC{"sectionID", "int", 0, false, false, "0"},
|
||||
{"attachID", "int", 0, false, true, ""},
|
||||
{"sectionID", "int", 0, false, false, "0"},
|
||||
ccol("sectionTable", 200, "forums"),
|
||||
tC{"originID", "int", 0, false, false, ""},
|
||||
{"originID", "int", 0, false, false, ""},
|
||||
ccol("originTable", 200, "replies"),
|
||||
tC{"uploadedBy", "int", 0, false, false, ""}, // TODO; Make this a foreign key
|
||||
{"uploadedBy", "int", 0, false, false, ""}, // TODO; Make this a foreign key
|
||||
ccol("path", 200, ""),
|
||||
ccol("extra", 200, ""),
|
||||
},
|
||||
[]tblKey{
|
||||
tblKey{"attachID", "primary", "", false},
|
||||
{"attachID", "primary", "", false},
|
||||
},
|
||||
)
|
||||
|
||||
createTable("revisions", mysqlPre, mysqlCol,
|
||||
[]tC{
|
||||
tC{"reviseID", "int", 0, false, true, ""},
|
||||
{"reviseID", "int", 0, false, true, ""},
|
||||
text("content"),
|
||||
tC{"contentID", "int", 0, false, false, ""},
|
||||
{"contentID", "int", 0, false, false, ""},
|
||||
ccol("contentType", 100, "replies"),
|
||||
createdAt(),
|
||||
// TODO: Add a createdBy column?
|
||||
},
|
||||
[]tblKey{
|
||||
tblKey{"reviseID", "primary", "", false},
|
||||
{"reviseID", "primary", "", false},
|
||||
},
|
||||
)
|
||||
|
||||
createTable("polls", mysqlPre, mysqlCol,
|
||||
[]tC{
|
||||
tC{"pollID", "int", 0, false, true, ""},
|
||||
tC{"parentID", "int", 0, false, false, "0"},
|
||||
{"pollID", "int", 0, false, true, ""},
|
||||
{"parentID", "int", 0, false, false, "0"},
|
||||
ccol("parentTable", 100, "topics"), // topics, replies
|
||||
tC{"type", "int", 0, false, false, "0"},
|
||||
tC{"options", "json", 0, false, false, ""},
|
||||
tC{"votes", "int", 0, false, false, "0"},
|
||||
{"type", "int", 0, false, false, "0"},
|
||||
{"options", "json", 0, false, false, ""},
|
||||
{"votes", "int", 0, false, false, "0"},
|
||||
},
|
||||
[]tblKey{
|
||||
tblKey{"pollID", "primary", "", false},
|
||||
{"pollID", "primary", "", false},
|
||||
},
|
||||
)
|
||||
|
||||
createTable("polls_options", "", "",
|
||||
[]tC{
|
||||
tC{"pollID", "int", 0, false, false, ""},
|
||||
tC{"option", "int", 0, false, false, "0"},
|
||||
tC{"votes", "int", 0, false, false, "0"},
|
||||
{"pollID", "int", 0, false, false, ""},
|
||||
{"option", "int", 0, false, false, "0"},
|
||||
{"votes", "int", 0, false, false, "0"},
|
||||
}, nil,
|
||||
)
|
||||
|
||||
createTable("polls_votes", mysqlPre, mysqlCol,
|
||||
[]tC{
|
||||
tC{"pollID", "int", 0, false, false, ""},
|
||||
tC{"uid", "int", 0, false, false, ""}, // TODO: Make this a foreign key
|
||||
tC{"option", "int", 0, false, false, "0"},
|
||||
{"pollID", "int", 0, false, false, ""},
|
||||
{"uid", "int", 0, false, false, ""}, // TODO: Make this a foreign key
|
||||
{"option", "int", 0, false, false, "0"},
|
||||
createdAt("castAt"),
|
||||
ccol("ip", 200, "''"),
|
||||
}, nil,
|
||||
@ -429,105 +429,105 @@ func createTables2(a qgen.Adapter, f func(table, charset, collation string, colu
|
||||
|
||||
createTable("users_replies", mysqlPre, mysqlCol,
|
||||
[]tC{
|
||||
tC{"rid", "int", 0, false, true, ""},
|
||||
tC{"uid", "int", 0, false, false, ""}, // TODO: Make this a foreign key
|
||||
{"rid", "int", 0, false, true, ""},
|
||||
{"uid", "int", 0, false, false, ""}, // TODO: Make this a foreign key
|
||||
text("content"),
|
||||
text("parsed_content"),
|
||||
createdAt(),
|
||||
tC{"createdBy", "int", 0, false, false, ""}, // TODO: Make this a foreign key
|
||||
tC{"lastEdit", "int", 0, false, false, "0"},
|
||||
tC{"lastEditBy", "int", 0, false, false, "0"},
|
||||
{"createdBy", "int", 0, false, false, ""}, // TODO: Make this a foreign key
|
||||
{"lastEdit", "int", 0, false, false, "0"},
|
||||
{"lastEditBy", "int", 0, false, false, "0"},
|
||||
ccol("ip", 200, "''"),
|
||||
},
|
||||
[]tblKey{
|
||||
tblKey{"rid", "primary", "", false},
|
||||
{"rid", "primary", "", false},
|
||||
},
|
||||
)
|
||||
|
||||
createTable("likes", "", "",
|
||||
[]tC{
|
||||
tC{"weight", "tinyint", 0, false, false, "1"},
|
||||
tC{"targetItem", "int", 0, false, false, ""},
|
||||
{"weight", "tinyint", 0, false, false, "1"},
|
||||
{"targetItem", "int", 0, false, false, ""},
|
||||
ccol("targetType", 50, "replies"),
|
||||
tC{"sentBy", "int", 0, false, false, ""}, // TODO: Make this a foreign key
|
||||
{"sentBy", "int", 0, false, false, ""}, // TODO: Make this a foreign key
|
||||
createdAt(),
|
||||
tC{"recalc", "tinyint", 0, false, false, "0"},
|
||||
{"recalc", "tinyint", 0, false, false, "0"},
|
||||
}, nil,
|
||||
)
|
||||
|
||||
//columns("participants, createdBy, createdAt, lastReplyBy, lastReplyAt").Where("cid = ?")
|
||||
createTable("conversations", "", "",
|
||||
[]tC{
|
||||
tC{"cid", "int", 0, false, true, ""},
|
||||
tC{"createdBy", "int", 0, false, false, ""}, // TODO: Make this a foreign key
|
||||
{"cid", "int", 0, false, true, ""},
|
||||
{"createdBy", "int", 0, false, false, ""}, // TODO: Make this a foreign key
|
||||
createdAt(),
|
||||
tC{"lastReplyAt", "datetime", 0, false, false, ""},
|
||||
tC{"lastReplyBy", "int", 0, false, false, ""},
|
||||
{"lastReplyAt", "datetime", 0, false, false, ""},
|
||||
{"lastReplyBy", "int", 0, false, false, ""},
|
||||
},
|
||||
[]tblKey{
|
||||
tblKey{"cid", "primary", "", false},
|
||||
{"cid", "primary", "", false},
|
||||
},
|
||||
)
|
||||
|
||||
createTable("conversations_posts", "", "",
|
||||
[]tC{
|
||||
tC{"pid", "int", 0, false, true, ""},
|
||||
tC{"cid", "int", 0, false, false, ""},
|
||||
tC{"createdBy", "int", 0, false, false, ""},
|
||||
{"pid", "int", 0, false, true, ""},
|
||||
{"cid", "int", 0, false, false, ""},
|
||||
{"createdBy", "int", 0, false, false, ""},
|
||||
ccol("body", 50, ""),
|
||||
ccol("post", 50, "''"),
|
||||
},
|
||||
[]tblKey{
|
||||
tblKey{"pid", "primary", "", false},
|
||||
{"pid", "primary", "", false},
|
||||
},
|
||||
)
|
||||
|
||||
createTable("conversations_participants", "", "",
|
||||
[]tC{
|
||||
tC{"uid", "int", 0, false, false, ""},
|
||||
tC{"cid", "int", 0, false, false, ""},
|
||||
{"uid", "int", 0, false, false, ""},
|
||||
{"cid", "int", 0, false, false, ""},
|
||||
}, nil,
|
||||
)
|
||||
|
||||
/*
|
||||
createTable("users_friends", "", "",
|
||||
[]tC{
|
||||
tC{"uid", "int", 0, false, false, ""},
|
||||
tC{"uid2", "int", 0, false, false, ""},
|
||||
{"uid", "int", 0, false, false, ""},
|
||||
{"uid2", "int", 0, false, false, ""},
|
||||
}, nil,
|
||||
)
|
||||
createTable("users_friends_invites", "", "",
|
||||
[]tC{
|
||||
tC{"requester", "int", 0, false, false, ""},
|
||||
tC{"target", "int", 0, false, false, ""},
|
||||
{"requester", "int", 0, false, false, ""},
|
||||
{"target", "int", 0, false, false, ""},
|
||||
}, nil,
|
||||
)
|
||||
*/
|
||||
|
||||
createTable("users_blocks", "", "",
|
||||
[]tC{
|
||||
tC{"blocker", "int", 0, false, false, ""},
|
||||
tC{"blockedUser", "int", 0, false, false, ""},
|
||||
{"blocker", "int", 0, false, false, ""},
|
||||
{"blockedUser", "int", 0, false, false, ""},
|
||||
}, nil,
|
||||
)
|
||||
|
||||
createTable("activity_stream_matches", "", "",
|
||||
[]tC{
|
||||
tC{"watcher", "int", 0, false, false, ""}, // TODO: Make this a foreign key
|
||||
tC{"asid", "int", 0, false, false, ""}, // TODO: Make this a foreign key
|
||||
{"watcher", "int", 0, false, false, ""}, // TODO: Make this a foreign key
|
||||
{"asid", "int", 0, false, false, ""}, // TODO: Make this a foreign key
|
||||
},
|
||||
[]tblKey{
|
||||
tblKey{"asid,asid", "foreign", "activity_stream", true},
|
||||
{"asid,asid", "foreign", "activity_stream", true},
|
||||
},
|
||||
)
|
||||
|
||||
createTable("activity_stream", "", "",
|
||||
[]tC{
|
||||
tC{"asid", "int", 0, false, true, ""},
|
||||
tC{"actor", "int", 0, false, false, ""}, /* the one doing the act */ // TODO: Make this a foreign key
|
||||
tC{"targetUser", "int", 0, false, false, ""}, /* the user who created the item the actor is acting on, some items like forums may lack a targetUser field */
|
||||
ccol("event", 50, ""), /* mention, like, reply (as in the act of replying to an item, not the reply item type, you can "reply" to a forum by making a topic in it), friend_invite */
|
||||
ccol("elementType", 50, ""), /* topic, post (calling it post here to differentiate it from the 'reply' event), forum, user */
|
||||
{"asid", "int", 0, false, true, ""},
|
||||
{"actor", "int", 0, false, false, ""}, /* the one doing the act */ // TODO: Make this a foreign key
|
||||
{"targetUser", "int", 0, false, false, ""}, /* the user who created the item the actor is acting on, some items like forums may lack a targetUser field */
|
||||
ccol("event", 50, ""), /* mention, like, reply (as in the act of replying to an item, not the reply item type, you can "reply" to a forum by making a topic in it), friend_invite */
|
||||
ccol("elementType", 50, ""), /* topic, post (calling it post here to differentiate it from the 'reply' event), forum, user */
|
||||
|
||||
// replacement for elementType
|
||||
tC{"elementTable", "int", 0, false, false, "0"},
|
||||
|
Loading…
Reference in New Issue
Block a user