diff --git a/migrations/001_original.sql b/migrations/001_original.sql index 2f5da55..29c8dbb 100644 --- a/migrations/001_original.sql +++ b/migrations/001_original.sql @@ -1,4 +1,8 @@ -create table if not exists wynn_guild_members ( +create schema if not exists wynn; +create schema if not exists minecraft; +create schema if not exists discord; + +create table if not exists wynn.guild_members ( guild_id UUID not null, member_id UUID not null, rank text not null, @@ -7,7 +11,7 @@ create table if not exists wynn_guild_members ( primary key (guild_id, member_id), unique(member_id) ); -create table if not exists wynn_guild_info ( +create table if not exists wynn.guild_info ( uid UUID not null, name text not null, prefix text not null, @@ -20,22 +24,22 @@ create table if not exists wynn_guild_info ( primary key (uid) ); -create index if not exists wynn_guild_info_xp on wynn_guild_info (xp); +create index if not exists wynn.guild_info_xp on wynn.guild_info (xp); -create table if not exists wynn_guild_season_results ( +create table if not exists wynn.guild_season_results ( guild_id UUID not null, season text not null, rating bigint not null, territories bigint not null, primary key (guild_id, season) ); -create table if not exists minecraft_user ( +create table if not exists minecraft.user ( uid UUID not null, name text not null, server text, primary key (uid) ); -create table if not exists discord_guild_setting( +create table if not exists discord.guild_setting( discord_guild text not null, name text not null, value jsonb not null, @@ -50,4 +54,6 @@ drop table if exists wynn_guild_season_results; drop table if exists minecraft_user; drop table if exists discord_guild_setting; - +drop schema if exists wynn cascade; +drop schema if exists minecraft cascade; +drop schema if exists discord cascade; diff --git a/ts/src/activities/guild.ts b/ts/src/activities/guild.ts index f975f06..5daf91e 100644 --- a/ts/src/activities/guild.ts +++ b/ts/src/activities/guild.ts @@ -20,7 +20,7 @@ export async function update_all_guilds() { const { sql } = await c.getAsync(PG) for(const [guild_name, guild] of Object.entries(parsed)){ - await sql`insert into wynn_guild_info + await sql`insert into wynn.guild_info (uid, name, prefix) values (${guild.uuid}, ${guild_name}, ${guild.prefix}) @@ -46,7 +46,7 @@ export async function update_guild({ const { db } = await c.getAsync(PG) await db.begin(async (sql) => { - await sql`insert into wynn_guild_info + await sql`insert into wynn.guild_info (uid, name, prefix, level, xp_percent, territories, wars, created) values (${parsed.uuid}, ${parsed.name}, ${parsed.prefix}, ${parsed.level}, ${parsed.xpPercent}, ${parsed.territories}, ${parsed.wars}, ${parseDate(parsed.created)}) @@ -62,7 +62,7 @@ export async function update_guild({ const {total, ...rest} = parsed.members for(const [rank_name, rank] of Object.entries(rest)){ for(const [userName, member] of Object.entries(rank)) { - await sql`insert into wynn_guild_members + await sql`insert into wynn.guild_members (guild_id, member_id, rank, joined_at, contributed) values (${parsed.uuid}, ${member.uuid}, ${rank_name}, ${parseDate(member.joined)}, ${member.contributed}) on conflict (guild_id, member_id) do update set @@ -70,7 +70,7 @@ export async function update_guild({ joined_at = EXCLUDED.joined_at, contributed = EXCLUDED.contributed ` - await sql`insert into minecraft_user + await sql`insert into minecraft.user (uid, name, server) values (${member.uuid}, ${userName}, ${member.server}) on conflict (uid) do update set name = EXCLUDED.name, @@ -79,7 +79,7 @@ export async function update_guild({ } } for (const [season, seasonData] of Object.entries(parsed.seasonRanks)) { - await sql`insert into wynn_guild_season_results + await sql`insert into wynn.guild_season_results (guild_id, season, rating, territories) values (${parsed.uuid}, ${season}, ${seasonData.rating}, ${seasonData.finalTerritories}) on conflict (guild_id, season) do update set diff --git a/ts/src/activities/leaderboards.ts b/ts/src/activities/leaderboards.ts index 622b631..1b41ad9 100644 --- a/ts/src/activities/leaderboards.ts +++ b/ts/src/activities/leaderboards.ts @@ -20,7 +20,7 @@ export async function update_guild_levels() { }).assert(ans.data) const { sql } = await c.getAsync(PG) for(const [_, guild] of Object.entries(parsed)){ - await sql`insert into wynn_guild_info + await sql`insert into wynn.guild_info (uid, name, prefix, xp, level) values (${guild.uuid}, ${guild.name}, ${guild.prefix}, ${guild.xp}, ${guild.level}) diff --git a/ts/src/activities/players.ts b/ts/src/activities/players.ts index 039f229..101426d 100644 --- a/ts/src/activities/players.ts +++ b/ts/src/activities/players.ts @@ -72,7 +72,7 @@ export const scrape_online_players = async()=>{ for(const [playerName, server] of Object.entries(onlineList.players)){ // we do this optimistically without a tx, because temporal will probably handle // the race, and the worst case is we do extra requests. - const ans = await sql`select uid from minecraft_user where name = ${playerName} limit 1` + const ans = await sql`select uid from minecraft.user where name = ${playerName} limit 1` if(ans.length === 0){ // the user doesn't exist, so we need to grab their uuid try { @@ -90,7 +90,7 @@ export const scrape_online_players = async()=>{ } const uuid = parsedPlayer.data.player.id // insert the user. - await sql`insert into minecraft_user (name, uid, server) values (${playerName}, ${uuid},${server}) + await sql`insert into minecraft.user (name, uid, server) values (${playerName}, ${uuid},${server}) on conflict (uid) do update set name = EXCLUDED.name, server = EXCLUDED.server @@ -104,10 +104,10 @@ export const scrape_online_players = async()=>{ } } await sql.begin(async (sql)=>{ - await sql`update minecraft_user set server = null` + await sql`update minecraft.user set server = null` for(const [playerName, server] of Object.entries(onlineList.players)){ try { - await sql`update minecraft_user set server = ${server} where name = ${playerName}` + await sql`update minecraft.user set server = ${server} where name = ${playerName}` }catch(e) { log.warn(`failed to update server for ${playerName}`, { "err": e, diff --git a/ts/src/bot/common/guild.ts b/ts/src/bot/common/guild.ts index 54dac8f..6ec17af 100644 --- a/ts/src/bot/common/guild.ts +++ b/ts/src/bot/common/guild.ts @@ -17,7 +17,7 @@ with ranked as (select territories, wars, rank() over (order by xp desc) as xp_rank - from wynn_guild_info + from wynn.guild_info ) select * from ranked where ranked.uid = ${guild_id} @@ -52,11 +52,11 @@ export const formGuildOnlineMessage = async (guild_id: string, sql:Sql): Promise name, rank, contributed, - minecraft_user.server as server - from wynn_guild_members inner join minecraft_user - on minecraft_user.uid = wynn_guild_members.member_id - where minecraft_user.server is not null - and wynn_guild_members.guild_id = ${guild_id} + minecraft.user.server as server + from wynn.guild_members inner join minecraft.user + on minecraft.user.uid = wynn.guild_members.member_id + where minecraft.user.server is not null + and wynn.guild_members.guild_id = ${guild_id} ` const members = type({ name: "string", @@ -98,9 +98,9 @@ export const formGuildLeaderboardMessage = async (guild_id: string, sql:Sql): Pr name, rank, contributed - from wynn_guild_members inner join minecraft_user - on minecraft_user.uid = wynn_guild_members.member_id - where wynn_guild_members.guild_id = ${guild_id} + from wynn.guild_members inner join minecraft.user + on minecraft.user.uid = wynn.guild_members.member_id + where wynn.guild_members.guild_id = ${guild_id} ` const members = type({ name: "string", diff --git a/ts/src/lib/wynn/wapi.ts b/ts/src/lib/wynn/wapi.ts index 2bfd836..56356bc 100644 --- a/ts/src/lib/wynn/wapi.ts +++ b/ts/src/lib/wynn/wapi.ts @@ -24,7 +24,7 @@ export class WApi { setupCache(c, { interpretHeader: true, - ttl: 5 * 1000, + ttl: 5000, storage: buildStorage({ async find(key, currentRequest) { const value = await store.get({key})