fantasy-manager/migrations/0001-0022-0000.ts
Lukas Schaefer 39b07adb55
Fix leagueSettings migration to kysely
Signed-off-by: Lukas Schaefer <lukas@lschaefer.xyz>
2025-05-13 15:11:28 -04:00

709 lines
29 KiB
TypeScript

import { Kysely, sql } from "kysely";
export async function up(db: Kysely<unknown>): Promise<void> {
await sql`UPDATE players SET position='unknown' WHERE position IS NULL`.execute(
db,
);
await sql`UPDATE historicalPlayers SET position='unknown' WHERE position IS NULL`.execute(
db,
);
await sql`DELETE FROM historicalPredictions WHERE matchday IS NULL`.execute(
db,
);
await db.schema.alterTable("users").renameTo("users2").execute();
await db.schema
.createTable("users")
.addColumn("id", "integer", (col) =>
col.primaryKey().autoIncrement().notNull(),
)
.addColumn("username", "varchar", (col) => col.defaultTo("").notNull())
.addColumn("password", "varchar", (col) => col.notNull())
.addColumn("throttle", "integer", (col) => col.defaultTo(30).notNull())
.addColumn("active", "boolean", (col) => col.defaultTo(false).notNull())
.addColumn("inactiveDays", "integer", (col) => col.defaultTo(0).notNull())
.addColumn("google", "varchar", (col) => col.defaultTo("").notNull())
.addColumn("github", "varchar", (col) => col.defaultTo("").notNull())
.addColumn("admin", "boolean", (col) => col.defaultTo(false).notNull())
.addColumn("favoriteLeague", "integer")
.addColumn("theme", "varchar")
.addColumn("locale", "varchar")
.execute();
await sql`INSERT INTO users (id, username, password, throttle, active, inactiveDays, google, github, admin,
favoriteLeague, theme, locale)
SELECT id,
COALESCE(username, ''),
password,
COALESCE(throttle, 30),
COALESCE(active, false),
COALESCE(inactiveDays, 0),
COALESCE(google, ''),
COALESCE(github, ''),
COALESCE(admin, false),
favoriteLeague,
theme,
locale
FROM users2`.execute(db);
await db.schema.dropTable("users2").execute();
await db.schema.alterTable("players").renameTo("players2").execute();
await db.schema
.createTable("players")
.addColumn("uid", "varchar", (col) => col.notNull())
.addColumn("name", "varchar", (col) => col.notNull())
.addColumn("nameAscii", "varchar", (col) => col.notNull())
.addColumn("club", "varchar", (col) => col.notNull())
.addColumn("pictureID", "integer", (col) => col.notNull())
.addColumn("value", "integer", (col) => col.notNull())
.addColumn("sale_price", "integer", (col) => col.notNull())
.addColumn("position", "varchar", (col) => col.notNull())
.addColumn("forecast", "varchar", (col) => col.notNull())
.addColumn("total_points", "integer", (col) => col.notNull())
.addColumn("average_points", "integer", (col) => col.notNull())
.addColumn("last_match", "integer", (col) => col.notNull())
.addColumn("locked", "boolean", (col) => col.notNull())
.addColumn("exists", "boolean", (col) => col.notNull())
.addColumn("league", "varchar", (col) => col.notNull())
.addPrimaryKeyConstraint("players_pkey", ["uid", "league"])
.execute();
await sql`INSERT INTO players (uid, name, nameAscii, club, pictureID, value, sale_price, position, forecast,
total_points, average_points, last_match, locked, "exists", league)
SELECT uid,
name,
nameAscii,
club,
pictureID,
value,
sale_price,
position,
forecast,
total_points,
average_points,
last_match,
locked,
"exists",
league
FROM players2`.execute(db);
await db.schema.dropTable("players2").execute();
await db.schema.alterTable("data").renameTo("data2").execute();
await db.schema
.createTable("data")
.addColumn("value1", "varchar", (col) => col.notNull().primaryKey())
.addColumn("value2", "varchar", (col) => col.notNull())
.execute();
await sql`INSERT INTO data (value1, value2)
SELECT value1, value2
FROM data2`.execute(db);
await db.schema.dropTable("data2").execute();
await db.schema
.alterTable("leagueSettings")
.renameTo("leagueSettings2")
.execute();
await db.schema
.createTable("leagueSettings")
.addColumn("leagueName", "varchar", (col) => col.notNull())
.addColumn("leagueID", "integer", (col) =>
col.primaryKey().autoIncrement().notNull(),
)
.addColumn("startMoney", "integer", (col) =>
col.defaultTo(150000000).notNull(),
)
.addColumn("transfers", "integer", (col) => col.defaultTo(6).notNull())
.addColumn("duplicatePlayers", "integer", (col) =>
col.defaultTo(1).notNull(),
)
.addColumn("starredPercentage", "integer", (col) =>
col.defaultTo(150).notNull(),
)
.addColumn("league", "varchar", (col) => col.notNull())
.addColumn("archived", "integer", (col) => col.defaultTo(0).notNull())
.addColumn("matchdayTransfers", "boolean", (col) =>
col.defaultTo(false).notNull(),
)
.addColumn("fantasyEnabled", "boolean", (col) =>
col.defaultTo(true).notNull(),
)
.addColumn("predictionsEnabled", "boolean", (col) =>
col.defaultTo(true).notNull(),
)
.addColumn("predictWinner", "integer", (col) => col.defaultTo(2).notNull())
.addColumn("predictDifference", "integer", (col) =>
col.defaultTo(5).notNull(),
)
.addColumn("predictExact", "integer", (col) => col.defaultTo(15).notNull())
.addColumn("top11", "boolean", (col) => col.defaultTo(false).notNull())
.addColumn("active", "boolean", (col) => col.defaultTo(false).notNull())
.addColumn("inactiveDays", "integer", (col) => col.defaultTo(0).notNull())
.execute();
await sql`INSERT INTO leagueSettings (leagueName, leagueID, startMoney, transfers, duplicatePlayers, starredPercentage, league,
archived, matchdayTransfers, fantasyEnabled, predictionsEnabled, predictWinner,
predictDifference, predictExact, top11, active, inactiveDays)
SELECT leagueName,
leagueID,
COALESCE(startMoney, 150000000),
COALESCE(transfers, 6),
COALESCE(duplicatePlayers, 1),
COALESCE(starredPercentage, 150),
league,
COALESCE(archived, 0),
COALESCE(matchdayTransfers, false),
COALESCE(fantasyEnabled, true),
COALESCE(predictionsEnabled, true),
COALESCE(predictWinner, 2),
COALESCE(predictDifference, 5),
COALESCE(predictExact, 15),
COALESCE(top11, false),
COALESCE(active, false),
COALESCE(inactiveDays, 0)
FROM leagueSettings2`.execute(db);
await db.schema.dropTable("leagueSettings2").execute();
await db.schema.alterTable("leagueUsers").renameTo("leagueUsers2").execute();
await db.schema
.createTable("leagueUsers")
.addColumn("leagueID", "integer", (col) => col.notNull())
.addColumn("user", "integer", (col) => col.notNull())
.addColumn("fantasyPoints", "integer", (col) => col.defaultTo(0).notNull())
.addColumn("predictionPoints", "integer", (col) =>
col.defaultTo(0).notNull(),
)
.addColumn("points", "integer", (col) => col.defaultTo(0).notNull())
.addColumn("money", "integer", (col) => col.notNull())
.addColumn("formation", "varchar", (col) =>
col.notNull().defaultTo("[1,4,4,2]"),
)
.addColumn("admin", "boolean", (col) => col.defaultTo(false).notNull())
.addColumn("tutorial", "boolean", (col) => col.defaultTo(true).notNull())
.addPrimaryKeyConstraint("leagueUsers_pkey", ["leagueID", "user"])
.execute();
await sql`INSERT INTO leagueUsers (leagueID, user, points, money, formation, admin, tutorial, fantasyPoints,
predictionPoints)
SELECT leagueID,
user,
COALESCE(points, 0),
money,
COALESCE(formation, '[1,4,4,2]'),
COALESCE(admin, false),
COALESCE(tutorial, true),
COALESCE(fantasyPoints, 0),
COALESCE(predictionPoints, 0)
FROM leagueUsers2`.execute(db);
await db.schema.dropTable("leagueUsers2").execute();
await db.schema.alterTable("points").renameTo("points2").execute();
await db.schema
.createTable("points")
.addColumn("leagueID", "integer", (col) => col.notNull())
.addColumn("user", "integer", (col) => col.notNull())
.addColumn("fantasyPoints", "integer", (col) => col.notNull().defaultTo(0))
.addColumn("predictionPoints", "integer", (col) =>
col.notNull().defaultTo(0),
)
.addColumn("points", "integer", (col) => col.notNull().defaultTo(0))
.addColumn("matchday", "integer", (col) => col.notNull())
.addColumn("money", "integer", (col) => col.notNull())
.addColumn("time", "integer")
.addPrimaryKeyConstraint("points_pkey", ["leagueID", "user", "matchday"])
.execute();
await sql`INSERT INTO points (leagueID, user, points, matchday, money, time, fantasyPoints, predictionPoints)
SELECT leagueID,
user,
COALESCE(points, 0),
matchday,
money,
time,
COALESCE(fantasyPoints, 0),
COALESCE(predictionPoints, 0)
FROM points2`.execute(db);
await db.schema.dropTable("points2").execute();
await db.schema.alterTable("transfers").renameTo("transfers2").execute();
await db.schema
.createTable("transfers")
.addColumn("leagueID", "integer", (col) => col.notNull())
.addColumn("seller", "integer", (col) => col.notNull())
.addColumn("buyer", "integer", (col) => col.notNull())
.addColumn("playeruid", "varchar", (col) => col.notNull())
.addColumn("value", "integer", (col) => col.notNull())
.addColumn("position", "varchar", (col) => col.defaultTo("bench").notNull())
.addColumn("starred", "boolean", (col) => col.defaultTo(false).notNull())
.addColumn("max", "integer", (col) => col.notNull())
.execute();
await sql`INSERT INTO transfers (leagueID, seller, buyer, playeruid, value, position, starred, max)
SELECT leagueID,
seller,
buyer,
playeruid,
value,
COALESCE(position, 'bench'),
COALESCE(starred, false),
max
FROM transfers2`.execute(db);
await db.schema.dropTable("transfers2").execute();
await db.schema.alterTable("invite").renameTo("invite2").execute();
await db.schema
.createTable("invite")
.addColumn("inviteID", "varchar", (col) => col.notNull())
.addColumn("leagueID", "integer", (col) => col.notNull())
.addPrimaryKeyConstraint("invite_pkey", ["inviteID"])
.execute();
await sql`INSERT INTO invite (inviteID, leagueID)
SELECT inviteID, leagueID
FROM invite2`.execute(db);
await db.schema.dropTable("invite2").execute();
await db.schema.alterTable("squad").renameTo("squad2").execute();
await db.schema
.createTable("squad")
.addColumn("leagueID", "integer", (col) => col.notNull())
.addColumn("user", "integer", (col) => col.notNull())
.addColumn("playeruid", "varchar", (col) => col.notNull())
.addColumn("position", "varchar", (col) => col.notNull())
.addColumn("starred", "boolean", (col) => col.defaultTo(false).notNull())
.addPrimaryKeyConstraint("squad_pkey", ["leagueID", "user", "playeruid"])
.execute();
await sql`INSERT INTO squad (leagueID, user, playeruid, position, starred)
SELECT leagueID, user, playeruid, position, COALESCE(starred, false)
FROM squad2`.execute(db);
await db.schema.dropTable("squad2").execute();
await db.schema
.alterTable("historicalSquad")
.renameTo("historicalSquad2")
.execute();
await db.schema
.createTable("historicalSquad")
.addColumn("matchday", "integer", (col) => col.notNull())
.addColumn("leagueID", "integer", (col) => col.notNull())
.addColumn("user", "integer", (col) => col.notNull())
.addColumn("playeruid", "varchar", (col) => col.notNull())
.addColumn("position", "varchar", (col) => col.notNull())
.addColumn("starred", "boolean", (col) => col.defaultTo(false).notNull())
.addPrimaryKeyConstraint("historicalSquad_pkey", [
"matchday",
"leagueID",
"user",
"playeruid",
])
.execute();
await sql`INSERT INTO historicalSquad (matchday, leagueID, user, playeruid, position, starred)
SELECT matchday, leagueID, user, playeruid, position, COALESCE(starred, false)
FROM historicalSquad2
WHERE 1 = 1
ON CONFLICT DO NOTHING`.execute(db);
await db.schema.dropTable("historicalSquad2").execute();
await db.schema
.alterTable("historicalPlayers")
.renameTo("historicalPlayers2")
.execute();
await db.schema
.createTable("historicalPlayers")
.addColumn("time", "integer", (col) => col.notNull())
.addColumn("uid", "varchar", (col) => col.notNull())
.addColumn("name", "varchar", (col) => col.notNull())
.addColumn("nameAscii", "varchar", (col) => col.notNull())
.addColumn("club", "varchar", (col) => col.notNull())
.addColumn("pictureID", "integer", (col) => col.notNull())
.addColumn("value", "integer", (col) => col.notNull())
.addColumn("sale_price", "integer", (col) => col.notNull())
.addColumn("position", "varchar", (col) => col.notNull())
.addColumn("forecast", "varchar", (col) => col.notNull())
.addColumn("total_points", "integer", (col) => col.notNull())
.addColumn("average_points", "integer", (col) => col.notNull())
.addColumn("last_match", "integer", (col) => col.notNull())
.addColumn("exists", "boolean", (col) => col.notNull())
.addColumn("league", "varchar", (col) => col.notNull())
.addPrimaryKeyConstraint("historicalPlayers_pkey", [
"time",
"uid",
"league",
])
.execute();
await sql`INSERT INTO historicalPlayers (time, uid, name, nameAscii, club, pictureID, value, sale_price, position,
forecast, total_points, average_points, last_match, "exists", league)
SELECT time,
uid,
name,
nameAscii,
club,
pictureID,
value,
sale_price,
position,
forecast,
total_points,
average_points,
last_match,
"exists",
league
FROM historicalPlayers2`.execute(db);
await db.schema.dropTable("historicalPlayers2").execute();
await db.schema
.alterTable("historicalTransfers")
.renameTo("historicalTransfers2")
.execute();
await db.schema
.createTable("historicalTransfers")
.addColumn("matchday", "integer", (col) => col.notNull())
.addColumn("leagueID", "integer", (col) => col.notNull())
.addColumn("seller", "integer", (col) => col.notNull())
.addColumn("buyer", "integer", (col) => col.notNull())
.addColumn("playeruid", "varchar", (col) => col.notNull())
.addColumn("value", "integer", (col) => col.notNull())
.execute();
await sql`INSERT INTO historicalTransfers (matchday, leagueID, seller, buyer, playeruid, value)
SELECT matchday, leagueID, seller, buyer, playeruid, value
FROM historicalTransfers2`.execute(db);
await db.schema.dropTable("historicalTransfers2").execute();
await db.schema.alterTable("clubs").renameTo("clubs2").execute();
await db.schema
.createTable("clubs")
.addColumn("club", "varchar", (col) => col.notNull())
.addColumn("fullName", "varchar")
.addColumn("gameStart", "integer", (col) => col.notNull())
.addColumn("gameEnd", "integer", (col) => col.notNull())
.addColumn("opponent", "varchar")
.addColumn("teamScore", "integer")
.addColumn("opponentScore", "integer")
.addColumn("league", "varchar", (col) => col.notNull())
.addColumn("home", "boolean", (col) => col.notNull())
.addColumn("exists", "boolean", (col) => col.notNull().defaultTo(true))
.addPrimaryKeyConstraint("clubs_pkey", ["club", "league"])
.execute();
await sql`INSERT INTO clubs (club, gameStart, gameEnd, opponent, teamScore, opponentScore, league, home, "exists",
fullName)
SELECT club,
gameStart,
gameEnd,
opponent,
teamScore,
opponentScore,
league,
home,
COALESCE("exists", true),
fullName
FROM clubs2`.execute(db);
await db.schema.dropTable("clubs2").execute();
await db.schema
.alterTable("historicalClubs")
.renameTo("historicalClubs2")
.execute();
await db.schema
.createTable("historicalClubs")
.addColumn("club", "varchar", (col) => col.notNull())
.addColumn("fullName", "varchar")
.addColumn("gameStart", "integer", (col) => col.notNull())
.addColumn("opponent", "varchar")
.addColumn("teamScore", "integer")
.addColumn("opponentScore", "integer")
.addColumn("league", "varchar", (col) => col.notNull())
.addColumn("home", "boolean", (col) => col.notNull())
.addColumn("time", "integer", (col) => col.notNull())
.addColumn("exists", "boolean", (col) => col.notNull().defaultTo(true))
.addPrimaryKeyConstraint("historicalClubs_pkey", ["club", "league", "time"])
.execute();
await sql`INSERT INTO historicalClubs (club, opponent, teamScore, opponentScore, league, home, time, "exists",
fullName, gameStart)
SELECT club,
opponent,
teamScore,
opponentScore,
league,
home,
time,
COALESCE("exists", true),
fullName,
gameStart
FROM historicalClubs2`.execute(db);
await db.schema.dropTable("historicalClubs2").execute();
await db.schema.alterTable("futureClubs").renameTo("futureClubs2").execute();
await db.schema
.createTable("futureClubs")
.addColumn("club", "varchar", (col) => col.notNull())
.addColumn("fullName", "varchar")
.addColumn("gameStart", "integer", (col) => col.notNull())
.addColumn("opponent", "varchar", (col) => col.notNull())
.addColumn("league", "varchar", (col) => col.notNull())
.addColumn("home", "boolean", (col) => col.notNull())
.addPrimaryKeyConstraint("futureClubs_pkey", [
"club",
"league",
"gameStart",
])
.execute();
await sql`INSERT INTO futureClubs (club, fullName, gameStart, opponent, league, home)
SELECT club, fullName, gameStart, opponent, league, home
FROM futureClubs2`.execute(db);
await db.schema.dropTable("futureClubs2").execute();
await db.schema.alterTable("analytics").renameTo("analytics2").execute();
await db.schema
.createTable("analytics")
.addColumn("day", "integer", (col) => col.primaryKey().notNull())
.addColumn("versionActive", "varchar", (col) => col.notNull())
.addColumn("versionTotal", "varchar", (col) => col.notNull())
.addColumn("leagueActive", "varchar", (col) => col.notNull())
.addColumn("leagueTotal", "varchar", (col) => col.notNull())
.addColumn("themeActive", "varchar", (col) => col.notNull())
.addColumn("themeTotal", "varchar", (col) => col.notNull())
.addColumn("localeActive", "varchar", (col) => col.notNull())
.addColumn("localeTotal", "varchar", (col) => col.notNull())
.execute();
await sql`INSERT INTO analytics (day, versionActive, versionTotal, leagueActive, leagueTotal, themeActive, themeTotal,
localeActive, localeTotal)
SELECT day,
versionActive,
versionTotal,
leagueActive,
leagueTotal,
themeActive,
themeTotal,
localeActive,
localeTotal
FROM analytics2`.execute(db);
await db.schema.dropTable("analytics2").execute();
await db.schema
.alterTable("detailedAnalytics")
.renameTo("detailedAnalytics2")
.execute();
await db.schema
.createTable("detailedAnalytics")
.addColumn("serverID", "varchar", (col) => col.notNull())
.addColumn("day", "integer", (col) => col.notNull())
.addColumn("version", "varchar", (col) => col.notNull())
.addColumn("active", "integer", (col) => col.notNull())
.addColumn("total", "integer", (col) => col.notNull())
.addColumn("leagueActive", "varchar", (col) => col.notNull())
.addColumn("leagueTotal", "varchar", (col) => col.notNull())
.addColumn("themeActive", "varchar", (col) => col.notNull())
.addColumn("themeTotal", "varchar", (col) => col.notNull())
.addColumn("localeActive", "varchar", (col) => col.notNull())
.addColumn("localeTotal", "varchar", (col) => col.notNull())
.addPrimaryKeyConstraint("detailedAnalytics_pkey", ["serverID", "day"])
.execute();
await sql`INSERT INTO detailedAnalytics (serverID, day, version, active, total, leagueActive, leagueTotal,
themeActive, themeTotal, localeActive, localeTotal)
SELECT serverID,
day,
version,
active,
total,
leagueActive,
leagueTotal,
themeActive,
themeTotal,
localeActive,
localeTotal
FROM detailedAnalytics2
WHERE 1 = 1
ON CONFLICT DO NOTHING`.execute(db);
await db.schema.dropTable("detailedAnalytics2").execute();
await db.schema
.alterTable("announcements")
.renameTo("announcements2")
.execute();
await db.schema
.createTable("announcements")
.addColumn("leagueID", "integer", (col) => col.notNull())
.addColumn("priority", "varchar", (col) => col.notNull())
.addColumn("title", "varchar", (col) => col.notNull())
.addColumn("description", "varchar", (col) => col.notNull())
.execute();
await sql`INSERT INTO announcements (leagueID, priority, title, description)
SELECT leagueID, priority, title, description
FROM announcements2`.execute(db);
await db.schema.dropTable("announcements2").execute();
await db.schema.alterTable("plugins").renameTo("plugins2").execute();
await db.schema
.createTable("plugins")
.addColumn("name", "varchar")
.addColumn("settings", "varchar", (col) => col.notNull())
.addColumn("enabled", "boolean", (col) => col.defaultTo(false).notNull())
.addColumn("installed", "boolean", (col) => col.defaultTo(false).notNull())
.addColumn("url", "varchar", (col) => col.primaryKey().notNull())
.addColumn("version", "varchar", (col) => col.notNull().defaultTo(""))
.execute();
await sql`INSERT INTO plugins (name, settings, enabled, url, version, installed)
SELECT name, settings, COALESCE(enabled, false), url, COALESCE(version, ''), COALESCE(installed, false)
FROM plugins2`.execute(db);
await db.schema.dropTable("plugins2").execute();
await db.schema.alterTable("pictures").renameTo("pictures2").execute();
await db.schema
.createTable("pictures")
.addColumn("id", "integer", (col) =>
col.primaryKey().autoIncrement().notNull(),
)
.addColumn("url", "varchar", (col) => col.notNull())
.addColumn("downloading", "boolean", (col) =>
col.defaultTo(false).notNull(),
)
.addColumn("downloaded", "boolean", (col) => col.defaultTo(false).notNull())
.addColumn("height", "integer", (col) => col.defaultTo(0).notNull())
.addColumn("width", "integer", (col) => col.defaultTo(0).notNull())
.execute();
await sql`INSERT INTO pictures (url, downloaded, height, width, downloading)
SELECT url,
COALESCE(downloaded, false),
COALESCE(height, 0),
COALESCE(width, 0),
COALESCE(downloading, false)
FROM pictures2`.execute(db);
await db.schema.dropTable("pictures2").execute();
await db.schema.alterTable("predictions").renameTo("predictions2").execute();
await db.schema
.createTable("predictions")
.addColumn("leagueID", "integer", (col) => col.notNull())
.addColumn("user", "integer", (col) => col.notNull())
.addColumn("club", "varchar", (col) => col.notNull())
.addColumn("league", "varchar", (col) => col.notNull())
.addColumn("home", "integer")
.addColumn("away", "integer")
.addPrimaryKeyConstraint("predictions_pkey", ["leagueID", "user", "club"])
.execute();
await sql`INSERT INTO predictions (leagueID, user, club, league, home, away)
SELECT leagueID, user, club, league, home, away
FROM predictions2`.execute(db);
await db.schema.dropTable("predictions2").execute();
await db.schema
.alterTable("historicalPredictions")
.renameTo("historicalPredictions2")
.execute();
await db.schema
.createTable("historicalPredictions")
.addColumn("matchday", "integer", (col) => col.notNull())
.addColumn("leagueID", "integer", (col) => col.notNull())
.addColumn("user", "integer", (col) => col.notNull())
.addColumn("club", "varchar", (col) => col.notNull())
.addColumn("league", "varchar", (col) => col.notNull())
.addColumn("home", "integer")
.addColumn("away", "integer")
.addPrimaryKeyConstraint("historicalPredictions_pkey", [
"leagueID",
"user",
"club",
"matchday",
])
.execute();
await sql`INSERT INTO historicalPredictions (matchday, leagueID, user, club, league, home, away)
SELECT matchday, leagueID, user, club, league, home, away
FROM historicalPredictions2
WHERE 1 = 1
ON CONFLICT DO NOTHING`.execute(db);
await db.schema.dropTable("historicalPredictions2").execute();
await db.schema
.alterTable("futurePredictions")
.renameTo("futurePredictions2")
.execute();
await db.schema
.createTable("futurePredictions")
.addColumn("leagueID", "integer", (col) => col.notNull())
.addColumn("user", "integer", (col) => col.notNull())
.addColumn("club", "varchar", (col) => col.notNull())
.addColumn("league", "varchar", (col) => col.notNull())
.addColumn("gameStart", "integer", (col) => col.notNull())
.addColumn("home", "integer")
.addColumn("away", "integer")
.addPrimaryKeyConstraint("futurePredictions_pkey", [
"leagueID",
"user",
"club",
"gameStart",
])
.execute();
await sql`INSERT INTO futurePredictions (leagueID, user, club, league, gameStart, home, away)
SELECT leagueID, user, club, league, gameStart, home, away
FROM futurePredictions2`.execute(db);
await db.schema.dropTable("futurePredictions2").execute();
await db.schema
.createIndex("points_leagueID_user")
.on("points")
.columns(["leagueID", "user"])
.execute();
await db.schema
.createIndex("transfers_leagueID")
.on("transfers")
.columns(["leagueID"])
.execute();
await db.schema
.createIndex("transfers_leagueID_buyer")
.on("transfers")
.columns(["leagueID", "buyer"])
.execute();
await db.schema
.createIndex("transfers_leagueID_seller")
.on("transfers")
.columns(["leagueID", "seller"])
.execute();
await db.schema
.createIndex("squad_leagueID_user")
.on("squad")
.columns(["leagueID", "user"])
.execute();
await db.schema
.createIndex("historicalSquad_leagueID_user_matchday")
.on("historicalSquad")
.columns(["leagueID", "user", "matchday"])
.execute();
await db.schema
.createIndex("historicalTransfers_leagueID_matchday")
.on("historicalTransfers")
.columns(["leagueID", "matchday"])
.execute();
await db.schema
.createIndex("clubs_club_league")
.on("historicalClubs")
.columns(["club", "league"])
.execute();
await db.schema
.createIndex("detailedAnalytics_day")
.on("detailedAnalytics")
.columns(["day"])
.execute();
await db.schema
.createIndex("announcements_leagueID")
.on("announcements")
.columns(["leagueID"])
.execute();
await db.schema
.createIndex("predictions_leagueID_user")
.on("predictions")
.columns(["leagueID", "user"])
.execute();
await db.schema
.createIndex("historicalPredictions_leagueID_user_matchday")
.on("historicalPredictions")
.columns(["leagueID", "user", "matchday"])
.execute();
await db.schema
.createIndex("url_pictures")
.on("pictures")
.columns(["url"])
.execute();
}