162 lines
7.2 KiB
TypeScript
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);
|
|
});
|
|
}
|