fantasy-manager/migrations/0001-0021-0000.ts
Lukas Schaefer d3a5fe88f9
switch to kysely (#863)
Signed-off-by: Lukas Schaefer <lukas@lschaefer.xyz>
2025-05-09 19:12:32 -04:00

334 lines
11 KiB
TypeScript

import { Kysely } from "kysely";
// This is meant to recreate the database from how it looked like with the old schema
export async function up(db: Kysely<unknown>): Promise<void> {
await db.schema
.createTable("users")
.ifNotExists()
.addColumn("id", "integer", (col) =>
col.primaryKey().autoIncrement().notNull(),
)
.addColumn("username", "varchar")
.addColumn("password", "varchar")
.addColumn("throttle", "integer", (col) => col.defaultTo(30))
.addColumn("active", "boolean", (col) => col.defaultTo(false))
.addColumn("inactiveDays", "integer", (col) => col.defaultTo(0))
.addColumn("google", "varchar", (col) => col.defaultTo(""))
.addColumn("github", "varchar", (col) => col.defaultTo(""))
.addColumn("admin", "boolean", (col) => col.defaultTo(false))
.addColumn("favoriteLeague", "integer")
.addColumn("theme", "varchar")
.addColumn("locale", "varchar")
.execute();
await db.schema
.createTable("players")
.ifNotExists()
.addColumn("uid", "varchar")
.addColumn("name", "varchar")
.addColumn("nameAscii", "varchar")
.addColumn("club", "varchar")
.addColumn("pictureID", "integer")
.addColumn("value", "integer")
.addColumn("sale_price", "integer")
.addColumn("position", "varchar")
.addColumn("forecast", "varchar")
.addColumn("total_points", "integer")
.addColumn("average_points", "integer")
.addColumn("last_match", "integer")
.addColumn("locked", "boolean")
.addColumn("exists", "boolean")
.addColumn("league", "varchar")
.execute();
await db.schema
.createTable("data")
.ifNotExists()
.addColumn("value1", "varchar")
.addColumn("value2", "varchar")
.addPrimaryKeyConstraint("data_pkey", ["value1"])
.execute();
await db.schema
.createTable("leagueSettings")
.ifNotExists()
.addColumn("leagueName", "varchar")
.addColumn("leagueID", "integer", (col) =>
col.primaryKey().autoIncrement().notNull(),
)
.addColumn("startMoney", "integer", (col) => col.defaultTo(150000000))
.addColumn("transfers", "integer", (col) => col.defaultTo(6))
.addColumn("duplicatePlayers", "integer", (col) => col.defaultTo(1))
.addColumn("starredPercentage", "integer", (col) => col.defaultTo(150))
.addColumn("league", "varchar")
.addColumn("archived", "integer", (col) => col.defaultTo(0))
.addColumn("matchdayTransfers", "boolean", (col) => col.defaultTo(false))
.addColumn("fantasyEnabled", "boolean", (col) => col.defaultTo(true))
.addColumn("predictionsEnabled", "boolean", (col) => col.defaultTo(true))
.addColumn("predictWinner", "integer", (col) => col.defaultTo(2))
.addColumn("predictDifference", "integer", (col) => col.defaultTo(5))
.addColumn("predictExact", "integer", (col) => col.defaultTo(15))
.addColumn("top11", "boolean", (col) => col.defaultTo(false))
.addColumn("active", "boolean", (col) => col.defaultTo(false))
.addColumn("inactiveDays", "integer", (col) => col.defaultTo(0))
.execute();
await db.schema
.createTable("leagueUsers")
.ifNotExists()
.addColumn("leagueID", "integer")
.addColumn("user", "integer")
.addColumn("fantasyPoints", "integer", (col) => col.defaultTo(0))
.addColumn("predictionPoints", "integer", (col) => col.defaultTo(0))
.addColumn("points", "integer")
.addColumn("money", "integer")
.addColumn("formation", "varchar")
.addColumn("admin", "boolean", (col) => col.defaultTo(false))
.addColumn("tutorial", "boolean", (col) => col.defaultTo(true))
.execute();
await db.schema
.createTable("points")
.ifNotExists()
.addColumn("leagueID", "integer")
.addColumn("user", "integer")
.addColumn("fantasyPoints", "integer")
.addColumn("predictionPoints", "integer")
.addColumn("points", "integer")
.addColumn("matchday", "integer")
.addColumn("money", "integer")
.addColumn("time", "integer")
.execute();
await db.schema
.createTable("transfers")
.ifNotExists()
.addColumn("leagueID", "integer")
.addColumn("seller", "integer")
.addColumn("buyer", "integer")
.addColumn("playeruid", "varchar")
.addColumn("value", "integer")
.addColumn("position", "varchar", (col) => col.defaultTo("bench"))
.addColumn("starred", "boolean", (col) => col.defaultTo(false))
.addColumn("max", "integer")
.addPrimaryKeyConstraint("transfers_pkey", [
"leagueID",
"seller",
"buyer",
"playeruid",
])
.execute();
await db.schema
.createTable("invite")
.ifNotExists()
.addColumn("inviteID", "varchar")
.addColumn("leagueID", "integer")
.addPrimaryKeyConstraint("invite_pkey", ["inviteID"])
.execute();
await db.schema
.createTable("squad")
.ifNotExists()
.addColumn("leagueID", "integer")
.addColumn("user", "integer")
.addColumn("playeruid", "varchar")
.addColumn("position", "varchar")
.addColumn("starred", "boolean", (col) => col.defaultTo(false))
.execute();
await db.schema
.createTable("historicalSquad")
.ifNotExists()
.addColumn("matchday", "integer")
.addColumn("leagueID", "integer")
.addColumn("user", "integer")
.addColumn("playeruid", "varchar")
.addColumn("position", "varchar")
.addColumn("starred", "boolean", (col) => col.defaultTo(false))
.execute();
await db.schema
.createTable("historicalPlayers")
.ifNotExists()
.addColumn("time", "integer")
.addColumn("uid", "varchar")
.addColumn("name", "varchar")
.addColumn("nameAscii", "varchar")
.addColumn("club", "varchar")
.addColumn("pictureID", "integer")
.addColumn("value", "integer")
.addColumn("sale_price", "integer")
.addColumn("position", "varchar")
.addColumn("forecast", "varchar")
.addColumn("total_points", "integer")
.addColumn("average_points", "integer")
.addColumn("last_match", "integer")
.addColumn("exists", "boolean")
.addColumn("league", "varchar")
.execute();
await db.schema
.createTable("historicalTransfers")
.ifNotExists()
.addColumn("matchday", "integer")
.addColumn("leagueID", "integer")
.addColumn("seller", "integer")
.addColumn("buyer", "integer")
.addColumn("playeruid", "varchar")
.addColumn("value", "integer")
.execute();
await db.schema
.createTable("clubs")
.ifNotExists()
.addColumn("club", "varchar")
.addColumn("fullName", "varchar")
.addColumn("gameStart", "integer")
.addColumn("gameEnd", "integer")
.addColumn("opponent", "varchar")
.addColumn("teamScore", "integer")
.addColumn("opponentScore", "integer")
.addColumn("league", "varchar")
.addColumn("home", "boolean")
.addColumn("exists", "boolean")
.addPrimaryKeyConstraint("clubs_pkey", ["club", "league"])
.execute();
await db.schema
.createTable("historicalClubs")
.ifNotExists()
.addColumn("club", "varchar")
.addColumn("fullName", "varchar")
.addColumn("gameStart", "integer")
.addColumn("opponent", "varchar")
.addColumn("teamScore", "integer")
.addColumn("opponentScore", "integer")
.addColumn("league", "varchar")
.addColumn("home", "boolean")
.addColumn("time", "integer")
.addColumn("exists", "boolean")
.addPrimaryKeyConstraint("historicalClubs_pkey", ["club", "league", "time"])
.execute();
await db.schema
.createTable("futureClubs")
.ifNotExists()
.addColumn("club", "varchar")
.addColumn("fullName", "varchar")
.addColumn("gameStart", "integer")
.addColumn("opponent", "varchar")
.addColumn("league", "varchar")
.addColumn("home", "boolean")
.addPrimaryKeyConstraint("futureClubs_pkey", [
"club",
"league",
"gameStart",
])
.execute();
await db.schema
.createTable("analytics")
.ifNotExists()
.addColumn("day", "integer", (col) => col.primaryKey())
.addColumn("versionActive", "varchar")
.addColumn("versionTotal", "varchar")
.addColumn("leagueActive", "varchar")
.addColumn("leagueTotal", "varchar")
.addColumn("themeActive", "varchar")
.addColumn("themeTotal", "varchar")
.addColumn("localeActive", "varchar")
.addColumn("localeTotal", "varchar")
.execute();
await db.schema
.createTable("detailedAnalytics")
.ifNotExists()
.addColumn("serverID", "varchar")
.addColumn("day", "integer")
.addColumn("version", "varchar")
.addColumn("active", "integer")
.addColumn("total", "integer")
.addColumn("leagueActive", "varchar")
.addColumn("leagueTotal", "varchar")
.addColumn("themeActive", "varchar")
.addColumn("themeTotal", "varchar")
.addColumn("localeActive", "varchar")
.addColumn("localeTotal", "varchar")
.execute();
await db.schema
.createTable("announcements")
.ifNotExists()
.addColumn("leagueID", "integer")
.addColumn("priority", "varchar")
.addColumn("title", "varchar")
.addColumn("description", "varchar")
.execute();
await db.schema
.createTable("plugins")
.ifNotExists()
.addColumn("name", "varchar")
.addColumn("settings", "varchar")
.addColumn("enabled", "boolean")
.addColumn("installed", "boolean")
.addColumn("url", "varchar", (col) => col.primaryKey())
.addColumn("version", "varchar")
.execute();
await db.schema
.createTable("pictures")
.ifNotExists()
.addColumn("id", "integer", (col) =>
col.primaryKey().autoIncrement().notNull(),
)
.addColumn("url", "varchar")
.addColumn("downloading", "boolean", (col) => col.defaultTo(false))
.addColumn("downloaded", "boolean", (col) => col.defaultTo(false))
.addColumn("height", "integer")
.addColumn("width", "integer")
.execute();
await db.schema
.createTable("predictions")
.ifNotExists()
.addColumn("leagueID", "integer")
.addColumn("user", "integer")
.addColumn("club", "varchar")
.addColumn("league", "varchar")
.addColumn("home", "integer")
.addColumn("away", "integer")
.addPrimaryKeyConstraint("predictions_pkey", ["leagueID", "user", "club"])
.execute();
await db.schema
.createTable("historicalPredictions")
.ifNotExists()
.addColumn("matchday", "integer")
.addColumn("leagueID", "integer")
.addColumn("user", "integer")
.addColumn("club", "varchar")
.addColumn("league", "varchar")
.addColumn("home", "integer")
.addColumn("away", "integer")
.execute();
await db.schema
.createTable("futurePredictions")
.ifNotExists()
.addColumn("leagueID", "integer")
.addColumn("user", "integer")
.addColumn("club", "varchar")
.addColumn("league", "varchar")
.addColumn("gameStart", "integer")
.addColumn("home", "integer")
.addColumn("away", "integer")
.addPrimaryKeyConstraint("futurePredictions_pkey", [
"leagueID",
"user",
"club",
"gameStart",
])
.execute();
}