fac-shared-db
v1.27.0
Published
Schemas Mongoose e helper de conexão compartilhados entre os bots do ecossistema (atualmente: `real-street-rp`, `marcar-acao-gta-rp`, `logs-exporter-gta-rp`, `pedir-rec-discord`). Todos os bots conectam direto no mesmo MongoDB Atlas — este pacote existe p
Readme
fac-shared-db
Schemas Mongoose e helper de conexão compartilhados entre os bots do ecossistema (atualmente: real-street-rp, marcar-acao-gta-rp, logs-exporter-gta-rp, pedir-rec-discord). Todos os bots conectam direto no mesmo MongoDB Atlas — este pacote existe para que o formato de cada collection seja definido em um único lugar, em vez de duplicado/hand-rolled em cada bot.
Uso
import { connectDatabase, AcaoMarcadaModel } from "fac-shared-db";
await connectDatabase(process.env.MONGO_URI!, "real-street-rp");
const acoes = await AcaoMarcadaModel.find({ resultado: "pendente" });connectDatabase(uri, dbName?) não conhece cluster, host ou appName de nenhum bot — cada bot monta sua própria connection string a partir das próprias env vars e decide como reagir a falha de conexão (retry, log, process.exit, etc). Isso mantém o pacote agnóstico em relação a qual bot o está consumindo.
Instalação
Distribuído como dependência git (sem publicação no npm):
"dependencies": {
"fac-shared-db": "git+https://github.com/Weslley08/fac-shared-db.git"
}O script prepare compila o TypeScript automaticamente após npm install.
Collections
| Model | Collection (Mongo) | Propósito |
|---|---|---|
| AcaoMarcadaModel | acaomarcadas | Ação escalada no canal de escalação (participantes, escalados, resultado) |
| AcoesConfigModel | acoesconfigs | Singleton: ações disponíveis + calendário semanal |
| AdvertenciaModel | advertencias | Advertências aplicadas a membros (nível, tipo, vencimento) |
| BaqueMarcadoModel | baquesmarcados (override explícito) | Baque marcado por uma facção contra outra, dentro da mesma cidade |
| AntiGrabberConfigModel | antigrabberconfigs | Singleton: config do anti-spam de anexos |
| BindsRoupaConfigModel | bindsroupaconfigs | Singleton: grupos de binds de roupa por cargo |
| BlacklistModel | blacklist (override explícito) | Banimento de jogadores, com TTL automático |
| BotConfigModel | botconfigs | Singleton: configuração geral do bot |
| Caixa2ItemModel | caixa2itens (override explícito) | Itens do baú com limites de advertência |
| CanalConfigModel | canalconfigs | Associação de canais lógicos → IDs Discord |
| CargoConfigModel | cargoconfigs | Hierarquia/config de cargos |
| CraftConfigModel | craftconfigs | Singleton: receitas de craft de munição |
| FarmModel | farms | Registro de farm por membro |
| FarmValidacaoStateModel | farmvalidacaostates | Estado persistido da validação de farm (TTL 10min) |
| FeatureTogglesConfigModel | featuretogglesconfigs | Singleton: feature flags via DB |
| MembroCadastroModel | membrocadastros | Cadastro de membro (nome/ID in-game) |
| MensagemRecrutamentoModel | mensagemrecrutamentos | Singleton (_id: "RECRUTAMENTO"): texto de recrutamento vigente |
| MensagemRotacaoModel | mensagemrotacaos | Mensagens que rotacionam em canais |
| RegistroOlheiroModel | registroolheiros | Registro de olheiro/recrutamento |
| VendaModel | vendas | Registro de venda de munição |
| VendaConfigModel | vendaconfigs | Singleton: preços e comissão de venda |
| KeyValueModel | keyvalues | Storage genérico key-value |
| HistoryModel | histories | Histórico append-only genérico |
Nomes de collection sem "override explícito" são o default do Mongoose (pluralização automática do nome do model) — não dependem de nenhuma string hardcoded neste pacote.
Quem lê/escreve o quê hoje
- real-street-rp: dono de todas as collections acima (cria/atualiza a maioria via painel admin e fluxos internos).
- marcar-acao-gta-rp: escreve em
acaomarcadas(cria novas ações quando confirmadas via DM). - pedir-rec-discord: lê
mensagemrecrutamentos(texto de recrutamento vigente, em vez de hardcoded). - logs-exporter-gta-rp: escreve em
blacklist(upsert a partir do parsing de logs) e lêcaixa2itens(limites de itens monitorados).
Ao adicionar uma collection nova usada por mais de um bot, ela nasce neste pacote — não em um dos bots individualmente.
