noot
Some checks failed
commit-tag / commit-tag-image (map[context:./migrations file:./migrations/Dockerfile name:migrations]) (push) Successful in 18s
commit-tag / commit-tag-image (map[context:./ts file:./ts/Dockerfile name:ts]) (push) Has been cancelled

This commit is contained in:
a 2025-03-02 19:12:28 -06:00
parent 7a2511db3b
commit 8672574427
No known key found for this signature in database
GPG Key ID: 2F22877AA4DFDADB
6 changed files with 33 additions and 27 deletions

View File

@ -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;

View File

@ -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

View File

@ -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})

View File

@ -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,

View File

@ -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",

View File

@ -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})