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 }