fac-shared-db 1.6.0 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -33,6 +33,7 @@ O script `prepare` compila o TypeScript automaticamente após `npm install`.
33
33
  | `AcaoMarcadaModel` | `acaomarcadas` | Ação escalada no canal de escalação (participantes, escalados, resultado) |
34
34
  | `AcoesConfigModel` | `acoesconfigs` | Singleton: ações disponíveis + calendário semanal |
35
35
  | `AdvertenciaModel` | `advertencias` | Advertências aplicadas a membros (nível, tipo, vencimento) |
36
+ | `BaqueMarcadoModel` | `baquesmarcados` (override explícito) | Baque marcado por uma facção contra outra, dentro da mesma cidade |
36
37
  | `AntiGrabberConfigModel` | `antigrabberconfigs` | Singleton: config do anti-spam de anexos |
37
38
  | `BindsRoupaConfigModel` | `bindsroupaconfigs` | Singleton: grupos de binds de roupa por cargo |
38
39
  | `BlacklistModel` | `blacklist` (override explícito) | Banimento de jogadores, com TTL automático |
@@ -0,0 +1,155 @@
1
+ import mongoose, { type Document } from "mongoose";
2
+ /**
3
+ * Registro de um baque marcado por uma facção contra outra, dentro da mesma
4
+ * cidade. Salvo pelo bot da facção desafiadora (ex: fac-assist-bot) — lido
5
+ * depois pelo self-bot (fac-helper-bot) pra anunciar no canal MARCAR_BAQUE
6
+ * da Cidade (ver Cidade.canais em fac-shared-db).
7
+ */
8
+ export interface IBaqueMarcado extends Document {
9
+ /** Nome da facção desafiada (Cidade.faccoes[].nome) */
10
+ baqueContraNome: string;
11
+ /** Cargo Discord da facção desafiada */
12
+ baqueContraCargoId: string;
13
+ /** Nome da facção desafiadora — sempre a facção dona do servidor que solicitou */
14
+ desafiadorNome: string;
15
+ /** Cargo Discord da facção desafiadora */
16
+ desafiadorCargoId: string;
17
+ /** Data do baque (dd/mm) */
18
+ data: string;
19
+ /** Hora do baque (hh:mm) */
20
+ hora: string;
21
+ /** Tipo de aposta */
22
+ aposta: string;
23
+ /** Discord ID de quem marcou */
24
+ criadoPor: string;
25
+ criadoEm: Date;
26
+ /** ID da mensagem do anúncio no canal MARCAR_BAQUE, depois de enviado pelo self-bot */
27
+ mensagemId?: string;
28
+ /** "pendente" até o self-bot anunciar no canal da cidade; "enviado" depois */
29
+ status: "pendente" | "enviado";
30
+ }
31
+ export declare const BaqueMarcadoSchema: mongoose.Schema<IBaqueMarcado, mongoose.Model<IBaqueMarcado, any, any, any, any, any, IBaqueMarcado>, {}, {}, {}, {}, mongoose.DefaultSchemaOptions, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
32
+ id: string;
33
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
34
+ _id: mongoose.Types.ObjectId;
35
+ }> & {
36
+ __v: number;
37
+ }, "id"> & {
38
+ id: string;
39
+ }, {
40
+ _id?: mongoose.SchemaDefinitionProperty<mongoose.Types.ObjectId, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
41
+ id: string;
42
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
43
+ _id: mongoose.Types.ObjectId;
44
+ }> & {
45
+ __v: number;
46
+ }, "id"> & {
47
+ id: string;
48
+ }> | undefined;
49
+ data?: mongoose.SchemaDefinitionProperty<string, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
50
+ id: string;
51
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
52
+ _id: mongoose.Types.ObjectId;
53
+ }> & {
54
+ __v: number;
55
+ }, "id"> & {
56
+ id: string;
57
+ }> | undefined;
58
+ hora?: mongoose.SchemaDefinitionProperty<string, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
59
+ id: string;
60
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
61
+ _id: mongoose.Types.ObjectId;
62
+ }> & {
63
+ __v: number;
64
+ }, "id"> & {
65
+ id: string;
66
+ }> | undefined;
67
+ criadoPor?: mongoose.SchemaDefinitionProperty<string, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
68
+ id: string;
69
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
70
+ _id: mongoose.Types.ObjectId;
71
+ }> & {
72
+ __v: number;
73
+ }, "id"> & {
74
+ id: string;
75
+ }> | undefined;
76
+ mensagemId?: mongoose.SchemaDefinitionProperty<string | undefined, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
77
+ id: string;
78
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
79
+ _id: mongoose.Types.ObjectId;
80
+ }> & {
81
+ __v: number;
82
+ }, "id"> & {
83
+ id: string;
84
+ }> | undefined;
85
+ criadoEm?: mongoose.SchemaDefinitionProperty<Date, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
86
+ id: string;
87
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
88
+ _id: mongoose.Types.ObjectId;
89
+ }> & {
90
+ __v: number;
91
+ }, "id"> & {
92
+ id: string;
93
+ }> | undefined;
94
+ baqueContraNome?: mongoose.SchemaDefinitionProperty<string, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
95
+ id: string;
96
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
97
+ _id: mongoose.Types.ObjectId;
98
+ }> & {
99
+ __v: number;
100
+ }, "id"> & {
101
+ id: string;
102
+ }> | undefined;
103
+ baqueContraCargoId?: mongoose.SchemaDefinitionProperty<string, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
104
+ id: string;
105
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
106
+ _id: mongoose.Types.ObjectId;
107
+ }> & {
108
+ __v: number;
109
+ }, "id"> & {
110
+ id: string;
111
+ }> | undefined;
112
+ desafiadorNome?: mongoose.SchemaDefinitionProperty<string, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
113
+ id: string;
114
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
115
+ _id: mongoose.Types.ObjectId;
116
+ }> & {
117
+ __v: number;
118
+ }, "id"> & {
119
+ id: string;
120
+ }> | undefined;
121
+ desafiadorCargoId?: mongoose.SchemaDefinitionProperty<string, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
122
+ id: string;
123
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
124
+ _id: mongoose.Types.ObjectId;
125
+ }> & {
126
+ __v: number;
127
+ }, "id"> & {
128
+ id: string;
129
+ }> | undefined;
130
+ aposta?: mongoose.SchemaDefinitionProperty<string, IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
131
+ id: string;
132
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
133
+ _id: mongoose.Types.ObjectId;
134
+ }> & {
135
+ __v: number;
136
+ }, "id"> & {
137
+ id: string;
138
+ }> | undefined;
139
+ status?: mongoose.SchemaDefinitionProperty<"pendente" | "enviado", IBaqueMarcado, mongoose.Document<unknown, {}, IBaqueMarcado, {
140
+ id: string;
141
+ }, mongoose.DefaultSchemaOptions> & Omit<IBaqueMarcado & Required<{
142
+ _id: mongoose.Types.ObjectId;
143
+ }> & {
144
+ __v: number;
145
+ }, "id"> & {
146
+ id: string;
147
+ }> | undefined;
148
+ }, IBaqueMarcado>;
149
+ export declare const BaqueMarcadoModel: mongoose.Model<IBaqueMarcado, {}, {}, {}, mongoose.Document<unknown, {}, IBaqueMarcado, {}, mongoose.DefaultSchemaOptions> & IBaqueMarcado & Required<{
150
+ _id: mongoose.Types.ObjectId;
151
+ }> & {
152
+ __v: number;
153
+ } & {
154
+ id: string;
155
+ }, any, IBaqueMarcado>;
@@ -0,0 +1,15 @@
1
+ import mongoose, { Schema } from "mongoose";
2
+ export const BaqueMarcadoSchema = new Schema({
3
+ baqueContraNome: { type: String, required: true },
4
+ baqueContraCargoId: { type: String, required: true },
5
+ desafiadorNome: { type: String, required: true },
6
+ desafiadorCargoId: { type: String, required: true },
7
+ data: { type: String, required: true },
8
+ hora: { type: String, required: true },
9
+ aposta: { type: String, required: true },
10
+ criadoPor: { type: String, required: true, index: true },
11
+ criadoEm: { type: Date, default: Date.now },
12
+ mensagemId: { type: String },
13
+ status: { type: String, default: "pendente", enum: ["pendente", "enviado"], index: true },
14
+ }, { collection: "baquesmarcados" });
15
+ export const BaqueMarcadoModel = mongoose.model("BaqueMarcado", BaqueMarcadoSchema);
@@ -0,0 +1,105 @@
1
+ import mongoose, { type Document } from "mongoose";
2
+ /**
3
+ * Cópia somente-leitura, no banco do PRÓPRIO tenant, do que ele precisa saber
4
+ * da Cidade (fac-shared-db) — catálogo de facções e qual é a própria facção.
5
+ * Escrita pelo fac-control-bot (dono da Cidade) sempre que o catálogo ou o
6
+ * vínculo Servidor→Cidade muda; o tenant só lê. Existe pra evitar que cada
7
+ * bot consumidor (ex: fac-assist-bot) precise abrir uma connection cross-db
8
+ * pro banco do fac-control-bot só pra ler isso. Singleton via configId fixo,
9
+ * mesmo padrão de MarcarAcaoGuildConfig/PedirRecGuildConfig.
10
+ */
11
+ export interface ICidadeCacheFaccao {
12
+ nome: string;
13
+ cargoFaccaoId: string;
14
+ }
15
+ export interface ICidadeCache extends Document {
16
+ configId: string;
17
+ cidadeNome: string;
18
+ /** Catálogo completo de facções da cidade (inclui a própria) */
19
+ faccoes: ICidadeCacheFaccao[];
20
+ /** Nome da própria facção dentro do catálogo (Servidor.faccaoNome) */
21
+ minhaFaccaoNome?: string;
22
+ /** Cargo Discord da própria facção — denormalizado pra não precisar buscar em `faccoes` */
23
+ minhaFaccaoCargoId?: string;
24
+ atualizadoEm: Date;
25
+ }
26
+ export declare const CidadeCacheSchema: mongoose.Schema<ICidadeCache, mongoose.Model<ICidadeCache, any, any, any, any, any, ICidadeCache>, {}, {}, {}, {}, mongoose.DefaultSchemaOptions, ICidadeCache, mongoose.Document<unknown, {}, ICidadeCache, {
27
+ id: string;
28
+ }, mongoose.DefaultSchemaOptions> & Omit<ICidadeCache & Required<{
29
+ _id: mongoose.Types.ObjectId;
30
+ }> & {
31
+ __v: number;
32
+ }, "id"> & {
33
+ id: string;
34
+ }, {
35
+ _id?: mongoose.SchemaDefinitionProperty<mongoose.Types.ObjectId, ICidadeCache, mongoose.Document<unknown, {}, ICidadeCache, {
36
+ id: string;
37
+ }, mongoose.DefaultSchemaOptions> & Omit<ICidadeCache & Required<{
38
+ _id: mongoose.Types.ObjectId;
39
+ }> & {
40
+ __v: number;
41
+ }, "id"> & {
42
+ id: string;
43
+ }> | undefined;
44
+ configId?: mongoose.SchemaDefinitionProperty<string, ICidadeCache, mongoose.Document<unknown, {}, ICidadeCache, {
45
+ id: string;
46
+ }, mongoose.DefaultSchemaOptions> & Omit<ICidadeCache & Required<{
47
+ _id: mongoose.Types.ObjectId;
48
+ }> & {
49
+ __v: number;
50
+ }, "id"> & {
51
+ id: string;
52
+ }> | undefined;
53
+ atualizadoEm?: mongoose.SchemaDefinitionProperty<Date, ICidadeCache, mongoose.Document<unknown, {}, ICidadeCache, {
54
+ id: string;
55
+ }, mongoose.DefaultSchemaOptions> & Omit<ICidadeCache & Required<{
56
+ _id: mongoose.Types.ObjectId;
57
+ }> & {
58
+ __v: number;
59
+ }, "id"> & {
60
+ id: string;
61
+ }> | undefined;
62
+ faccoes?: mongoose.SchemaDefinitionProperty<ICidadeCacheFaccao[], ICidadeCache, mongoose.Document<unknown, {}, ICidadeCache, {
63
+ id: string;
64
+ }, mongoose.DefaultSchemaOptions> & Omit<ICidadeCache & Required<{
65
+ _id: mongoose.Types.ObjectId;
66
+ }> & {
67
+ __v: number;
68
+ }, "id"> & {
69
+ id: string;
70
+ }> | undefined;
71
+ cidadeNome?: mongoose.SchemaDefinitionProperty<string, ICidadeCache, mongoose.Document<unknown, {}, ICidadeCache, {
72
+ id: string;
73
+ }, mongoose.DefaultSchemaOptions> & Omit<ICidadeCache & Required<{
74
+ _id: mongoose.Types.ObjectId;
75
+ }> & {
76
+ __v: number;
77
+ }, "id"> & {
78
+ id: string;
79
+ }> | undefined;
80
+ minhaFaccaoNome?: mongoose.SchemaDefinitionProperty<string | undefined, ICidadeCache, mongoose.Document<unknown, {}, ICidadeCache, {
81
+ id: string;
82
+ }, mongoose.DefaultSchemaOptions> & Omit<ICidadeCache & Required<{
83
+ _id: mongoose.Types.ObjectId;
84
+ }> & {
85
+ __v: number;
86
+ }, "id"> & {
87
+ id: string;
88
+ }> | undefined;
89
+ minhaFaccaoCargoId?: mongoose.SchemaDefinitionProperty<string | undefined, ICidadeCache, mongoose.Document<unknown, {}, ICidadeCache, {
90
+ id: string;
91
+ }, mongoose.DefaultSchemaOptions> & Omit<ICidadeCache & Required<{
92
+ _id: mongoose.Types.ObjectId;
93
+ }> & {
94
+ __v: number;
95
+ }, "id"> & {
96
+ id: string;
97
+ }> | undefined;
98
+ }, ICidadeCache>;
99
+ export declare const CidadeCacheModel: mongoose.Model<ICidadeCache, {}, {}, {}, mongoose.Document<unknown, {}, ICidadeCache, {}, mongoose.DefaultSchemaOptions> & ICidadeCache & Required<{
100
+ _id: mongoose.Types.ObjectId;
101
+ }> & {
102
+ __v: number;
103
+ } & {
104
+ id: string;
105
+ }, any, ICidadeCache>;
@@ -0,0 +1,14 @@
1
+ import mongoose, { Schema } from "mongoose";
2
+ const CidadeCacheFaccaoSchema = new Schema({
3
+ nome: { type: String, required: true },
4
+ cargoFaccaoId: { type: String, required: true },
5
+ }, { _id: false });
6
+ export const CidadeCacheSchema = new Schema({
7
+ configId: { type: String, default: "main", unique: true },
8
+ cidadeNome: { type: String, required: true },
9
+ faccoes: { type: [CidadeCacheFaccaoSchema], default: [] },
10
+ minhaFaccaoNome: { type: String },
11
+ minhaFaccaoCargoId: { type: String },
12
+ atualizadoEm: { type: Date, default: Date.now },
13
+ });
14
+ export const CidadeCacheModel = mongoose.model("CidadeCache", CidadeCacheSchema);
@@ -4,6 +4,8 @@ export { AcoesConfigModel, AcoesConfigSchema } from "./AcoesConfig.js";
4
4
  export type { IAcoesConfig } from "./AcoesConfig.js";
5
5
  export { AdvertenciaModel } from "./Advertencia.js";
6
6
  export type { IAdvertencia, TipoAdvertencia } from "./Advertencia.js";
7
+ export { BaqueMarcadoModel, BaqueMarcadoSchema } from "./BaqueMarcado.js";
8
+ export type { IBaqueMarcado } from "./BaqueMarcado.js";
7
9
  export { AntiGrabberConfigModel } from "./AntiGrabberConfig.js";
8
10
  export type { IAntiGrabberConfig } from "./AntiGrabberConfig.js";
9
11
  export { BindsRoupaConfigModel } from "./BindsRoupaConfig.js";
@@ -20,6 +22,8 @@ export { CargoConfigModel } from "./CargoConfig.js";
20
22
  export type { ICargoConfig } from "./CargoConfig.js";
21
23
  export { CidadeModel, CidadeSchema } from "./Cidade.js";
22
24
  export type { ICidade, ICidadeCanal, ICidadeFaccao } from "./Cidade.js";
25
+ export { CidadeCacheModel, CidadeCacheSchema } from "./CidadeCache.js";
26
+ export type { ICidadeCache, ICidadeCacheFaccao } from "./CidadeCache.js";
23
27
  export { CraftConfigModel } from "./CraftConfig.js";
24
28
  export type { ICraftConfig } from "./CraftConfig.js";
25
29
  export { FarmModel } from "./Farm.js";
@@ -1,6 +1,7 @@
1
1
  export { AcaoMarcadaModel, AcaoMarcadaSchema } from "./AcaoMarcada.js";
2
2
  export { AcoesConfigModel, AcoesConfigSchema } from "./AcoesConfig.js";
3
3
  export { AdvertenciaModel } from "./Advertencia.js";
4
+ export { BaqueMarcadoModel, BaqueMarcadoSchema } from "./BaqueMarcado.js";
4
5
  export { AntiGrabberConfigModel } from "./AntiGrabberConfig.js";
5
6
  export { BindsRoupaConfigModel } from "./BindsRoupaConfig.js";
6
7
  export { BlacklistModel, BlacklistSchema } from "./Blacklist.js";
@@ -9,6 +10,7 @@ export { Caixa2ItemModel, Caixa2ItemSchema } from "./Caixa2Item.js";
9
10
  export { CanalConfigModel } from "./CanalConfig.js";
10
11
  export { CargoConfigModel } from "./CargoConfig.js";
11
12
  export { CidadeModel, CidadeSchema } from "./Cidade.js";
13
+ export { CidadeCacheModel, CidadeCacheSchema } from "./CidadeCache.js";
12
14
  export { CraftConfigModel } from "./CraftConfig.js";
13
15
  export { FarmModel } from "./Farm.js";
14
16
  export { FarmValidacaoStateModel } from "./FarmValidacaoState.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fac-shared-db",
3
- "version": "1.6.0",
3
+ "version": "1.8.0",
4
4
  "type": "module",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",