Files
pagodera/lib/db/seeds/servers-seed.ts
2025-11-11 03:08:36 -03:00

162 lines
7.2 KiB
TypeScript

/**
* Seed inicial de servidores do Tibia
* Lista completa de servidores oficiais
*/
import { resolve } from "node:path";
// Carregar variáveis de ambiente
import { config } from "dotenv";
// Tentar carregar .env.local primeiro, depois .env
config({ path: resolve(process.cwd(), ".env.local") });
config({ path: resolve(process.cwd(), ".env") });
import { query } from "../index";
export interface ServerSeed {
server_name: string;
server_type: "pvp" | "no-pvp" | "retro-pvp" | "hardcore-pvp";
location: "NA" | "SA" | "EU" | "OC" | "BR";
}
// Lista de servidores oficiais do Tibia (servidores únicos)
// Nota: Cada servidor tem um nome único. O tipo pode ser atualizado posteriormente se necessário.
const TIBIA_SERVERS: ServerSeed[] = [
// Servidores PvP - EU
{ server_name: "Antica", server_type: "pvp", location: "EU" },
{ server_name: "Assombra", server_type: "pvp", location: "EU" },
{ server_name: "Astera", server_type: "pvp", location: "EU" },
{ server_name: "Belobra", server_type: "pvp", location: "EU" },
{ server_name: "Bona", server_type: "pvp", location: "EU" },
{ server_name: "Calmera", server_type: "pvp", location: "EU" },
{ server_name: "Celesta", server_type: "pvp", location: "EU" },
{ server_name: "Concorda", server_type: "pvp", location: "EU" },
{ server_name: "Cosera", server_type: "pvp", location: "EU" },
{ server_name: "Damora", server_type: "pvp", location: "EU" },
{ server_name: "Descubra", server_type: "pvp", location: "EU" },
{ server_name: "Dia", server_type: "pvp", location: "EU" },
{ server_name: "Duna", server_type: "pvp", location: "EU" },
{ server_name: "Elera", server_type: "pvp", location: "EU" },
{ server_name: "Epoca", server_type: "pvp", location: "EU" },
{ server_name: "Esmera", server_type: "pvp", location: "EU" },
{ server_name: "Faluna", server_type: "pvp", location: "EU" },
{ server_name: "Famosa", server_type: "pvp", location: "EU" },
{ server_name: "Fera", server_type: "pvp", location: "EU" },
{ server_name: "Ferobra", server_type: "pvp", location: "EU" },
{ server_name: "Firmera", server_type: "pvp", location: "EU" },
{ server_name: "Funera", server_type: "pvp", location: "EU" },
{ server_name: "Furia", server_type: "pvp", location: "EU" },
{ server_name: "Garnera", server_type: "pvp", location: "EU" },
{ server_name: "Gentebra", server_type: "pvp", location: "EU" },
{ server_name: "Gladera", server_type: "pvp", location: "EU" },
{ server_name: "Gravitera", server_type: "pvp", location: "EU" },
{ server_name: "Grimera", server_type: "pvp", location: "EU" },
{ server_name: "Harmonia", server_type: "pvp", location: "EU" },
{ server_name: "Honbra", server_type: "pvp", location: "EU" },
{ server_name: "Impulsa", server_type: "pvp", location: "EU" },
{ server_name: "Inabra", server_type: "pvp", location: "EU" },
{ server_name: "Issobra", server_type: "pvp", location: "EU" },
{ server_name: "Jacabra", server_type: "pvp", location: "EU" },
{ server_name: "Javibra", server_type: "pvp", location: "EU" },
{ server_name: "Jonera", server_type: "pvp", location: "EU" },
{ server_name: "Kalibra", server_type: "pvp", location: "EU" },
{ server_name: "Kardera", server_type: "pvp", location: "EU" },
{ server_name: "Kenora", server_type: "pvp", location: "EU" },
{ server_name: "Libertabra", server_type: "pvp", location: "EU" },
{ server_name: "Lobera", server_type: "pvp", location: "EU" },
{ server_name: "Luminera", server_type: "pvp", location: "EU" },
{ server_name: "Lutabra", server_type: "pvp", location: "EU" },
{ server_name: "Menera", server_type: "pvp", location: "EU" },
{ server_name: "Mitigera", server_type: "pvp", location: "EU" },
{ server_name: "Monza", server_type: "pvp", location: "EU" },
{ server_name: "Nefera", server_type: "pvp", location: "EU" },
{ server_name: "Noctera", server_type: "pvp", location: "EU" },
{ server_name: "Ocera", server_type: "pvp", location: "EU" },
{ server_name: "Ombra", server_type: "pvp", location: "EU" },
{ server_name: "Pacera", server_type: "pvp", location: "EU" },
{ server_name: "Peloria", server_type: "pvp", location: "EU" },
{ server_name: "Premia", server_type: "pvp", location: "EU" },
{ server_name: "Pyra", server_type: "pvp", location: "EU" },
{ server_name: "Quelibra", server_type: "pvp", location: "EU" },
{ server_name: "Quintera", server_type: "pvp", location: "EU" },
{ server_name: "Refugia", server_type: "pvp", location: "EU" },
{ server_name: "Relania", server_type: "pvp", location: "EU" },
{ server_name: "Secura", server_type: "pvp", location: "EU" },
{ server_name: "Serdebra", server_type: "pvp", location: "EU" },
{ server_name: "Solidera", server_type: "pvp", location: "EU" },
{ server_name: "Talonera", server_type: "pvp", location: "EU" },
{ server_name: "Tortura", server_type: "pvp", location: "EU" },
{ server_name: "Unica", server_type: "pvp", location: "EU" },
{ server_name: "Utobra", server_type: "pvp", location: "EU" },
{ server_name: "Venebra", server_type: "pvp", location: "EU" },
{ server_name: "Vita", server_type: "pvp", location: "EU" },
{ server_name: "Vunira", server_type: "pvp", location: "EU" },
{ server_name: "Wadira", server_type: "pvp", location: "EU" },
{ server_name: "Wintera", server_type: "pvp", location: "EU" },
{ server_name: "Xandebra", server_type: "pvp", location: "EU" },
{ server_name: "Yonabra", server_type: "pvp", location: "EU" },
{ server_name: "Zuna", server_type: "pvp", location: "EU" },
{ server_name: "Zunera", server_type: "pvp", location: "EU" },
// Servidores No-PvP - EU
{ server_name: "Asteria", server_type: "no-pvp", location: "EU" },
{ server_name: "Belluma", server_type: "no-pvp", location: "EU" },
{ server_name: "Calva", server_type: "no-pvp", location: "EU" },
{ server_name: "Castela", server_type: "no-pvp", location: "EU" },
{ server_name: "Collabra", server_type: "no-pvp", location: "EU" },
{ server_name: "Estela", server_type: "no-pvp", location: "EU" },
];
export async function seedServers() {
console.log("🌱 Iniciando seed de servidores...\n");
let inserted = 0;
let skipped = 0;
for (const server of TIBIA_SERVERS) {
try {
// Verificar se já existe
const existing = await query<{ server_id: number }>(
"SELECT server_id FROM servers WHERE server_name = $1",
[server.server_name],
);
if (existing.rows.length > 0) {
skipped++;
continue;
}
// Inserir servidor
await query(
`INSERT INTO servers (server_name, server_type, location, is_active)
VALUES ($1, $2, $3, $4)`,
[server.server_name, server.server_type, server.location, true],
);
inserted++;
} catch (error) {
console.error(
`❌ Erro ao inserir servidor ${server.server_name}:`,
error,
);
}
}
console.log(
`✅ Seed concluído: ${inserted} servidores inseridos, ${skipped} já existiam\n`,
);
}
// Se executado diretamente
if (require.main === module) {
seedServers()
.then(() => {
console.log("🎉 Seed finalizado com sucesso!");
process.exit(0);
})
.catch((error) => {
console.error("❌ Erro fatal no seed:", error);
process.exit(1);
});
}