72 lines
2.6 KiB
Lua
72 lines
2.6 KiB
Lua
local db = require("lapis.db")
|
|
local schema = require("lapis.db.schema")
|
|
local types = schema.types
|
|
|
|
return {
|
|
[1] = function ()
|
|
schema.create_table("sessions", {
|
|
{"id", types.integer{primary_key = true}},
|
|
{"key", types.text{unique = true}},
|
|
{"user_id", "INTEGER REFERENCES users(id) ON DELETE CASCADE"},
|
|
{"expires_at", types.integer},
|
|
{"created_at", "INTEGER DEFAULT (unixepoch(CURRENT_TIMESTAMP))"},
|
|
})
|
|
|
|
db.query("CREATE INDEX sessions_user_id ON sessions(user_id)")
|
|
db.query("CREATE INDEX session_keys ON sessions(key)")
|
|
end,
|
|
|
|
[2] = function ()
|
|
schema.add_column("users", "confirmed_on", types.integer{null = true})
|
|
end,
|
|
|
|
[3] = function ()
|
|
schema.add_column("users", "status", types.text{null = true, default=""})
|
|
schema.create_table("avatars", {
|
|
{"id", types.integer{primary_key = true}},
|
|
{"file_path", types.text{unique = true}},
|
|
{"uploaded_at", "INTEGER DEFAULT (unixepoch(CURRENT_TIMESTAMP))"},
|
|
})
|
|
schema.add_column("users", "avatar_id", "REFERENCES avatars(id) ON DELETE SET NULL")
|
|
end,
|
|
|
|
[4] = function ()
|
|
schema.add_column("topics", "description", types.text{default=""})
|
|
|
|
-- topic locked = no new threads can be created in the topic, but posts can be made in threads
|
|
-- thread locked = no new posts can be created in the thread, existing posts can not be edited
|
|
-- admins bypass both restrictions
|
|
schema.add_column("topics", "is_locked", "BOOLEAN DEFAULT FALSE")
|
|
schema.add_column("threads", "is_locked", "BOOLEAN DEFAULT FALSE")
|
|
-- will appear on top of non-stickied threads in topic view
|
|
schema.add_column("threads", "is_stickied", "BOOLEAN DEFAULT FALSE")
|
|
end,
|
|
|
|
[5] = function ()
|
|
db.query("CREATE INDEX idx_posts_thread ON posts(thread_id, created_at, id)")
|
|
db.query("CREATE INDEX idx_users_avatar ON users(avatar_id)")
|
|
db.query("CREATE INDEX idx_topics_slug ON topics(slug)")
|
|
db.query("CREATE INDEX idx_threads_slug ON threads(slug)")
|
|
end,
|
|
|
|
[6] = function ()
|
|
schema.drop_column("post_history", "user_id")
|
|
end,
|
|
|
|
[7] = function ()
|
|
db.query('DROP INDEX "idx_users_avatar"')
|
|
schema.drop_column("users", "avatar_id")
|
|
schema.add_column("users", "avatar_id", "REFERENCES avatars(id) DEFAULT 1")
|
|
end,
|
|
|
|
[8] = function ()
|
|
schema.add_column("topics", "sort_order", types.integer{default = 0})
|
|
db.query("UPDATE topics SET sort_order = (SELECT COUNT(*) FROM topics t2 WHERE t2.ROWID <= topics.ROWID)")
|
|
end,
|
|
|
|
[9] = function ()
|
|
schema.add_column("post_history", "original_markup", types.text{null = false})
|
|
schema.add_column("post_history", "markup_language", types.text{default = "babycode"})
|
|
end,
|
|
}
|