noot
This commit is contained in:
parent
7a2511db3b
commit
8672574427
@ -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,
|
guild_id UUID not null,
|
||||||
member_id UUID not null,
|
member_id UUID not null,
|
||||||
rank text not null,
|
rank text not null,
|
||||||
@ -7,7 +11,7 @@ create table if not exists wynn_guild_members (
|
|||||||
primary key (guild_id, member_id),
|
primary key (guild_id, member_id),
|
||||||
unique(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,
|
uid UUID not null,
|
||||||
name text not null,
|
name text not null,
|
||||||
prefix text not null,
|
prefix text not null,
|
||||||
@ -20,22 +24,22 @@ create table if not exists wynn_guild_info (
|
|||||||
primary key (uid)
|
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,
|
guild_id UUID not null,
|
||||||
season text not null,
|
season text not null,
|
||||||
rating bigint not null,
|
rating bigint not null,
|
||||||
territories bigint not null,
|
territories bigint not null,
|
||||||
primary key (guild_id, season)
|
primary key (guild_id, season)
|
||||||
);
|
);
|
||||||
create table if not exists minecraft_user (
|
create table if not exists minecraft.user (
|
||||||
uid UUID not null,
|
uid UUID not null,
|
||||||
name text not null,
|
name text not null,
|
||||||
server text,
|
server text,
|
||||||
primary key (uid)
|
primary key (uid)
|
||||||
);
|
);
|
||||||
create table if not exists discord_guild_setting(
|
create table if not exists discord.guild_setting(
|
||||||
discord_guild text not null,
|
discord_guild text not null,
|
||||||
name text not null,
|
name text not null,
|
||||||
value jsonb 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 minecraft_user;
|
||||||
drop table if exists discord_guild_setting;
|
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;
|
||||||
|
@ -20,7 +20,7 @@ export async function update_all_guilds() {
|
|||||||
|
|
||||||
const { sql } = await c.getAsync(PG)
|
const { sql } = await c.getAsync(PG)
|
||||||
for(const [guild_name, guild] of Object.entries(parsed)){
|
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)
|
(uid, name, prefix)
|
||||||
values
|
values
|
||||||
(${guild.uuid}, ${guild_name}, ${guild.prefix})
|
(${guild.uuid}, ${guild_name}, ${guild.prefix})
|
||||||
@ -46,7 +46,7 @@ export async function update_guild({
|
|||||||
const { db } = await c.getAsync(PG)
|
const { db } = await c.getAsync(PG)
|
||||||
|
|
||||||
await db.begin(async (sql) => {
|
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)
|
(uid, name, prefix, level, xp_percent, territories, wars, created)
|
||||||
values
|
values
|
||||||
(${parsed.uuid}, ${parsed.name}, ${parsed.prefix}, ${parsed.level}, ${parsed.xpPercent}, ${parsed.territories}, ${parsed.wars}, ${parseDate(parsed.created)})
|
(${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
|
const {total, ...rest} = parsed.members
|
||||||
for(const [rank_name, rank] of Object.entries(rest)){
|
for(const [rank_name, rank] of Object.entries(rest)){
|
||||||
for(const [userName, member] of Object.entries(rank)) {
|
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
|
(guild_id, member_id, rank, joined_at, contributed) values
|
||||||
(${parsed.uuid}, ${member.uuid}, ${rank_name}, ${parseDate(member.joined)}, ${member.contributed})
|
(${parsed.uuid}, ${member.uuid}, ${rank_name}, ${parseDate(member.joined)}, ${member.contributed})
|
||||||
on conflict (guild_id, member_id) do update set
|
on conflict (guild_id, member_id) do update set
|
||||||
@ -70,7 +70,7 @@ export async function update_guild({
|
|||||||
joined_at = EXCLUDED.joined_at,
|
joined_at = EXCLUDED.joined_at,
|
||||||
contributed = EXCLUDED.contributed
|
contributed = EXCLUDED.contributed
|
||||||
`
|
`
|
||||||
await sql`insert into minecraft_user
|
await sql`insert into minecraft.user
|
||||||
(uid, name, server) values (${member.uuid}, ${userName}, ${member.server})
|
(uid, name, server) values (${member.uuid}, ${userName}, ${member.server})
|
||||||
on conflict (uid) do update set
|
on conflict (uid) do update set
|
||||||
name = EXCLUDED.name,
|
name = EXCLUDED.name,
|
||||||
@ -79,7 +79,7 @@ export async function update_guild({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (const [season, seasonData] of Object.entries(parsed.seasonRanks)) {
|
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
|
(guild_id, season, rating, territories) values
|
||||||
(${parsed.uuid}, ${season}, ${seasonData.rating}, ${seasonData.finalTerritories})
|
(${parsed.uuid}, ${season}, ${seasonData.rating}, ${seasonData.finalTerritories})
|
||||||
on conflict (guild_id, season) do update set
|
on conflict (guild_id, season) do update set
|
||||||
|
@ -20,7 +20,7 @@ export async function update_guild_levels() {
|
|||||||
}).assert(ans.data)
|
}).assert(ans.data)
|
||||||
const { sql } = await c.getAsync(PG)
|
const { sql } = await c.getAsync(PG)
|
||||||
for(const [_, guild] of Object.entries(parsed)){
|
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)
|
(uid, name, prefix, xp, level)
|
||||||
values
|
values
|
||||||
(${guild.uuid}, ${guild.name}, ${guild.prefix}, ${guild.xp}, ${guild.level})
|
(${guild.uuid}, ${guild.name}, ${guild.prefix}, ${guild.xp}, ${guild.level})
|
||||||
|
@ -72,7 +72,7 @@ export const scrape_online_players = async()=>{
|
|||||||
for(const [playerName, server] of Object.entries(onlineList.players)){
|
for(const [playerName, server] of Object.entries(onlineList.players)){
|
||||||
// we do this optimistically without a tx, because temporal will probably handle
|
// we do this optimistically without a tx, because temporal will probably handle
|
||||||
// the race, and the worst case is we do extra requests.
|
// 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){
|
if(ans.length === 0){
|
||||||
// the user doesn't exist, so we need to grab their uuid
|
// the user doesn't exist, so we need to grab their uuid
|
||||||
try {
|
try {
|
||||||
@ -90,7 +90,7 @@ export const scrape_online_players = async()=>{
|
|||||||
}
|
}
|
||||||
const uuid = parsedPlayer.data.player.id
|
const uuid = parsedPlayer.data.player.id
|
||||||
// insert the user.
|
// 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
|
on conflict (uid) do update set
|
||||||
name = EXCLUDED.name,
|
name = EXCLUDED.name,
|
||||||
server = EXCLUDED.server
|
server = EXCLUDED.server
|
||||||
@ -104,10 +104,10 @@ export const scrape_online_players = async()=>{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
await sql.begin(async (sql)=>{
|
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)){
|
for(const [playerName, server] of Object.entries(onlineList.players)){
|
||||||
try {
|
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) {
|
}catch(e) {
|
||||||
log.warn(`failed to update server for ${playerName}`, {
|
log.warn(`failed to update server for ${playerName}`, {
|
||||||
"err": e,
|
"err": e,
|
||||||
|
@ -17,7 +17,7 @@ with ranked as (select
|
|||||||
territories,
|
territories,
|
||||||
wars,
|
wars,
|
||||||
rank() over (order by xp desc) as xp_rank
|
rank() over (order by xp desc) as xp_rank
|
||||||
from wynn_guild_info
|
from wynn.guild_info
|
||||||
)
|
)
|
||||||
select * from ranked
|
select * from ranked
|
||||||
where ranked.uid = ${guild_id}
|
where ranked.uid = ${guild_id}
|
||||||
@ -52,11 +52,11 @@ export const formGuildOnlineMessage = async (guild_id: string, sql:Sql): Promise
|
|||||||
name,
|
name,
|
||||||
rank,
|
rank,
|
||||||
contributed,
|
contributed,
|
||||||
minecraft_user.server as server
|
minecraft.user.server as server
|
||||||
from wynn_guild_members inner join minecraft_user
|
from wynn.guild_members inner join minecraft.user
|
||||||
on minecraft_user.uid = wynn_guild_members.member_id
|
on minecraft.user.uid = wynn.guild_members.member_id
|
||||||
where minecraft_user.server is not null
|
where minecraft.user.server is not null
|
||||||
and wynn_guild_members.guild_id = ${guild_id}
|
and wynn.guild_members.guild_id = ${guild_id}
|
||||||
`
|
`
|
||||||
const members = type({
|
const members = type({
|
||||||
name: "string",
|
name: "string",
|
||||||
@ -98,9 +98,9 @@ export const formGuildLeaderboardMessage = async (guild_id: string, sql:Sql): Pr
|
|||||||
name,
|
name,
|
||||||
rank,
|
rank,
|
||||||
contributed
|
contributed
|
||||||
from wynn_guild_members inner join minecraft_user
|
from wynn.guild_members inner join minecraft.user
|
||||||
on minecraft_user.uid = wynn_guild_members.member_id
|
on minecraft.user.uid = wynn.guild_members.member_id
|
||||||
where wynn_guild_members.guild_id = ${guild_id}
|
where wynn.guild_members.guild_id = ${guild_id}
|
||||||
`
|
`
|
||||||
const members = type({
|
const members = type({
|
||||||
name: "string",
|
name: "string",
|
||||||
|
@ -24,7 +24,7 @@ export class WApi {
|
|||||||
|
|
||||||
setupCache(c, {
|
setupCache(c, {
|
||||||
interpretHeader: true,
|
interpretHeader: true,
|
||||||
ttl: 5 * 1000,
|
ttl: 5000,
|
||||||
storage: buildStorage({
|
storage: buildStorage({
|
||||||
async find(key, currentRequest) {
|
async find(key, currentRequest) {
|
||||||
const value = await store.get({key})
|
const value = await store.get({key})
|
||||||
|
Loading…
Reference in New Issue
Block a user