You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 lines
1.6 KiB
Lua

local db = require "lapis.db"
local schema = require "lapis.db.schema"
local types = schema.types
return {
[100] = function()
schema.create_table("users", {
{ "id", types.serial { unique=true, primary_key=true }},
{ "username", types.varchar { unique=true }},
{ "password", types.varchar },
{ "admin", types.boolean { default=false }},
{ "mod", types.boolean { default=false }},
{ "janitor", types.boolean { default=false }}
})
schema.create_table("bans", {
{ "id", types.serial { unique=true, primary_key=true }},
{ "board_id", types.integer { default=0 }},
{ "ip", types.varchar },
{ "reason", types.varchar { null=true }},
{ "time", types.integer },
{ "duration", types.integer { default=259200 }}, -- 3 days
})
end,
[120] = function()
end,
[200] = function()
local Users = require "src.models.users"
local uuid = require "resty.jit-uuid"
uuid.seed()
schema.add_column("users", "api_key", types.varchar { default="00000000-0000-0000-0000-000000000000" })
local users = Users:get_all()
for _, user in ipairs(users) do
user.api_key = uuid()
user:update("api_key")
end
schema.add_column("users", "role", types.integer)
db.query("UPDATE users SET role=? WHERE janitor=true", Users.role.JANITOR)
db.query("UPDATE users SET role=? WHERE mod=true", Users.role.MOD)
db.query("UPDATE users SET role=? WHERE admin=true", Users.role.ADMIN)
db.query("UPDATE users SET role=? WHERE id=1", Users.role.OWNER)
schema.drop_column("users", "janitor")
schema.drop_column("users", "mod")
schema.drop_column("users", "admin")
end
}