fac-shared-db 1.1.1 → 1.2.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.
@@ -1,4 +1,4 @@
1
- import mongoose from "mongoose";
1
+ import mongoose, { type Connection, type Model, type Schema } from "mongoose";
2
2
  /**
3
3
  * Conecta ao MongoDB via Mongoose a partir de uma connection string já montada
4
4
  * pelo bot consumidor. Este pacote não conhece cluster, host ou appName de
@@ -6,4 +6,11 @@ import mongoose from "mongoose";
6
6
  * env vars e decide como lidar com falha de conexão (retry, log, exit, etc).
7
7
  */
8
8
  export declare function connectDatabase(uri: string, dbName?: string): Promise<typeof mongoose>;
9
+ /**
10
+ * Vincula um schema deste pacote a uma connection diferente da default — usado
11
+ * pelo padrão `mongoose.connection.useDb(dbName)` pra ler/escrever no banco de
12
+ * um tenant específico (ou no banco do fac-control-bot) sem abrir uma conexão
13
+ * nova nem duplicar a definição do schema em cada bot consumidor.
14
+ */
15
+ export declare function modelOn<T>(conn: Connection, name: string, schema: Schema<T>): Model<T>;
9
16
  export { mongoose };
@@ -10,4 +10,13 @@ export async function connectDatabase(uri, dbName) {
10
10
  return mongoose;
11
11
  return mongoose.connect(uri, dbName ? { dbName } : undefined);
12
12
  }
13
+ /**
14
+ * Vincula um schema deste pacote a uma connection diferente da default — usado
15
+ * pelo padrão `mongoose.connection.useDb(dbName)` pra ler/escrever no banco de
16
+ * um tenant específico (ou no banco do fac-control-bot) sem abrir uma conexão
17
+ * nova nem duplicar a definição do schema em cada bot consumidor.
18
+ */
19
+ export function modelOn(conn, name, schema) {
20
+ return conn.models[name] ?? conn.model(name, schema);
21
+ }
13
22
  export { mongoose };
@@ -8,6 +8,43 @@ export interface IFeatureTogglesConfig extends Document {
8
8
  /** Override de feature toggles via MongoDB (sobrescreve .env quando definido) */
9
9
  toggles: Map<string, boolean>;
10
10
  }
11
+ export declare const FeatureTogglesConfigSchema: mongoose.Schema<IFeatureTogglesConfig, mongoose.Model<IFeatureTogglesConfig, any, any, any, any, any, IFeatureTogglesConfig>, {}, {}, {}, {}, mongoose.DefaultSchemaOptions, IFeatureTogglesConfig, mongoose.Document<unknown, {}, IFeatureTogglesConfig, {
12
+ id: string;
13
+ }, mongoose.DefaultSchemaOptions> & Omit<IFeatureTogglesConfig & Required<{
14
+ _id: mongoose.Types.ObjectId;
15
+ }> & {
16
+ __v: number;
17
+ }, "id"> & {
18
+ id: string;
19
+ }, {
20
+ _id?: mongoose.SchemaDefinitionProperty<mongoose.Types.ObjectId, IFeatureTogglesConfig, mongoose.Document<unknown, {}, IFeatureTogglesConfig, {
21
+ id: string;
22
+ }, mongoose.DefaultSchemaOptions> & Omit<IFeatureTogglesConfig & Required<{
23
+ _id: mongoose.Types.ObjectId;
24
+ }> & {
25
+ __v: number;
26
+ }, "id"> & {
27
+ id: string;
28
+ }> | undefined;
29
+ configId?: mongoose.SchemaDefinitionProperty<string, IFeatureTogglesConfig, mongoose.Document<unknown, {}, IFeatureTogglesConfig, {
30
+ id: string;
31
+ }, mongoose.DefaultSchemaOptions> & Omit<IFeatureTogglesConfig & Required<{
32
+ _id: mongoose.Types.ObjectId;
33
+ }> & {
34
+ __v: number;
35
+ }, "id"> & {
36
+ id: string;
37
+ }> | undefined;
38
+ toggles?: mongoose.SchemaDefinitionProperty<Map<string, boolean>, IFeatureTogglesConfig, mongoose.Document<unknown, {}, IFeatureTogglesConfig, {
39
+ id: string;
40
+ }, mongoose.DefaultSchemaOptions> & Omit<IFeatureTogglesConfig & Required<{
41
+ _id: mongoose.Types.ObjectId;
42
+ }> & {
43
+ __v: number;
44
+ }, "id"> & {
45
+ id: string;
46
+ }> | undefined;
47
+ }, IFeatureTogglesConfig>;
11
48
  export declare const FeatureTogglesConfigModel: mongoose.Model<IFeatureTogglesConfig, {}, {}, {}, mongoose.Document<unknown, {}, IFeatureTogglesConfig, {}, mongoose.DefaultSchemaOptions> & IFeatureTogglesConfig & Required<{
12
49
  _id: mongoose.Types.ObjectId;
13
50
  }> & {
@@ -1,5 +1,5 @@
1
1
  import mongoose, { Schema } from "mongoose";
2
- const FeatureTogglesConfigSchema = new Schema({
2
+ export const FeatureTogglesConfigSchema = new Schema({
3
3
  configId: { type: String, default: "main", unique: true },
4
4
  toggles: { type: Map, of: Boolean, default: new Map() },
5
5
  });
@@ -0,0 +1,116 @@
1
+ import mongoose, { type Document } from "mongoose";
2
+ /**
3
+ * Config do domínio logsExporter (fac-helper-bot), por tenant — mesmo padrão
4
+ * de MarcarAcaoGuildConfig. Singleton via configId fixo.
5
+ */
6
+ export interface ILogsExporterChannel {
7
+ id: string;
8
+ name: string;
9
+ }
10
+ export interface ILogsExporterSplitRule {
11
+ sourceChannel: string;
12
+ destFolder: string;
13
+ splitType: string;
14
+ keyword: string;
15
+ ignoredPlayerIds: string[];
16
+ }
17
+ export interface ILogsExporterGuildConfig extends Document {
18
+ configId: string;
19
+ channels: ILogsExporterChannel[];
20
+ /** Webhooks por canal — chave é o nome do canal (ex.: "BAU", "BAU-TATICO") */
21
+ webhooks: Map<string, string>;
22
+ exportIntervalMinutes: number;
23
+ splitRules: ILogsExporterSplitRule[];
24
+ caixa2JanelaMinutos: number;
25
+ /** IDs ignorados na detecção de Caixa 2 — chave é o nome do canal */
26
+ caixa2IgnoredIds: Map<string, string[]>;
27
+ }
28
+ export declare const LogsExporterGuildConfigSchema: mongoose.Schema<ILogsExporterGuildConfig, mongoose.Model<ILogsExporterGuildConfig, any, any, any, any, any, ILogsExporterGuildConfig>, {}, {}, {}, {}, mongoose.DefaultSchemaOptions, ILogsExporterGuildConfig, mongoose.Document<unknown, {}, ILogsExporterGuildConfig, {
29
+ id: string;
30
+ }, mongoose.DefaultSchemaOptions> & Omit<ILogsExporterGuildConfig & Required<{
31
+ _id: mongoose.Types.ObjectId;
32
+ }> & {
33
+ __v: number;
34
+ }, "id"> & {
35
+ id: string;
36
+ }, {
37
+ _id?: mongoose.SchemaDefinitionProperty<mongoose.Types.ObjectId, ILogsExporterGuildConfig, mongoose.Document<unknown, {}, ILogsExporterGuildConfig, {
38
+ id: string;
39
+ }, mongoose.DefaultSchemaOptions> & Omit<ILogsExporterGuildConfig & Required<{
40
+ _id: mongoose.Types.ObjectId;
41
+ }> & {
42
+ __v: number;
43
+ }, "id"> & {
44
+ id: string;
45
+ }> | undefined;
46
+ configId?: mongoose.SchemaDefinitionProperty<string, ILogsExporterGuildConfig, mongoose.Document<unknown, {}, ILogsExporterGuildConfig, {
47
+ id: string;
48
+ }, mongoose.DefaultSchemaOptions> & Omit<ILogsExporterGuildConfig & Required<{
49
+ _id: mongoose.Types.ObjectId;
50
+ }> & {
51
+ __v: number;
52
+ }, "id"> & {
53
+ id: string;
54
+ }> | undefined;
55
+ channels?: mongoose.SchemaDefinitionProperty<ILogsExporterChannel[], ILogsExporterGuildConfig, mongoose.Document<unknown, {}, ILogsExporterGuildConfig, {
56
+ id: string;
57
+ }, mongoose.DefaultSchemaOptions> & Omit<ILogsExporterGuildConfig & Required<{
58
+ _id: mongoose.Types.ObjectId;
59
+ }> & {
60
+ __v: number;
61
+ }, "id"> & {
62
+ id: string;
63
+ }> | undefined;
64
+ webhooks?: mongoose.SchemaDefinitionProperty<Map<string, string>, ILogsExporterGuildConfig, mongoose.Document<unknown, {}, ILogsExporterGuildConfig, {
65
+ id: string;
66
+ }, mongoose.DefaultSchemaOptions> & Omit<ILogsExporterGuildConfig & Required<{
67
+ _id: mongoose.Types.ObjectId;
68
+ }> & {
69
+ __v: number;
70
+ }, "id"> & {
71
+ id: string;
72
+ }> | undefined;
73
+ exportIntervalMinutes?: mongoose.SchemaDefinitionProperty<number, ILogsExporterGuildConfig, mongoose.Document<unknown, {}, ILogsExporterGuildConfig, {
74
+ id: string;
75
+ }, mongoose.DefaultSchemaOptions> & Omit<ILogsExporterGuildConfig & Required<{
76
+ _id: mongoose.Types.ObjectId;
77
+ }> & {
78
+ __v: number;
79
+ }, "id"> & {
80
+ id: string;
81
+ }> | undefined;
82
+ splitRules?: mongoose.SchemaDefinitionProperty<ILogsExporterSplitRule[], ILogsExporterGuildConfig, mongoose.Document<unknown, {}, ILogsExporterGuildConfig, {
83
+ id: string;
84
+ }, mongoose.DefaultSchemaOptions> & Omit<ILogsExporterGuildConfig & Required<{
85
+ _id: mongoose.Types.ObjectId;
86
+ }> & {
87
+ __v: number;
88
+ }, "id"> & {
89
+ id: string;
90
+ }> | undefined;
91
+ caixa2JanelaMinutos?: mongoose.SchemaDefinitionProperty<number, ILogsExporterGuildConfig, mongoose.Document<unknown, {}, ILogsExporterGuildConfig, {
92
+ id: string;
93
+ }, mongoose.DefaultSchemaOptions> & Omit<ILogsExporterGuildConfig & Required<{
94
+ _id: mongoose.Types.ObjectId;
95
+ }> & {
96
+ __v: number;
97
+ }, "id"> & {
98
+ id: string;
99
+ }> | undefined;
100
+ caixa2IgnoredIds?: mongoose.SchemaDefinitionProperty<Map<string, string[]>, ILogsExporterGuildConfig, mongoose.Document<unknown, {}, ILogsExporterGuildConfig, {
101
+ id: string;
102
+ }, mongoose.DefaultSchemaOptions> & Omit<ILogsExporterGuildConfig & Required<{
103
+ _id: mongoose.Types.ObjectId;
104
+ }> & {
105
+ __v: number;
106
+ }, "id"> & {
107
+ id: string;
108
+ }> | undefined;
109
+ }, ILogsExporterGuildConfig>;
110
+ export declare const LogsExporterGuildConfigModel: mongoose.Model<ILogsExporterGuildConfig, {}, {}, {}, mongoose.Document<unknown, {}, ILogsExporterGuildConfig, {}, mongoose.DefaultSchemaOptions> & ILogsExporterGuildConfig & Required<{
111
+ _id: mongoose.Types.ObjectId;
112
+ }> & {
113
+ __v: number;
114
+ } & {
115
+ id: string;
116
+ }, any, ILogsExporterGuildConfig>;
@@ -0,0 +1,23 @@
1
+ import mongoose, { Schema } from "mongoose";
2
+ export const LogsExporterGuildConfigSchema = new Schema({
3
+ configId: { type: String, default: "main", unique: true },
4
+ channels: {
5
+ type: [{ id: { type: String, required: true }, name: { type: String, required: true } }],
6
+ default: [],
7
+ },
8
+ webhooks: { type: Map, of: String, default: new Map() },
9
+ exportIntervalMinutes: { type: Number, default: 10 },
10
+ splitRules: {
11
+ type: [{
12
+ sourceChannel: { type: String, required: true },
13
+ destFolder: { type: String, required: true },
14
+ splitType: { type: String, required: true },
15
+ keyword: { type: String, default: "" },
16
+ ignoredPlayerIds: { type: [String], default: [] },
17
+ }],
18
+ default: [],
19
+ },
20
+ caixa2JanelaMinutos: { type: Number, default: 15 },
21
+ caixa2IgnoredIds: { type: Map, of: [String], default: new Map() },
22
+ });
23
+ export const LogsExporterGuildConfigModel = mongoose.model("LogsExporterGuildConfig", LogsExporterGuildConfigSchema);
@@ -0,0 +1,74 @@
1
+ import mongoose, { type Document } from "mongoose";
2
+ /**
3
+ * Config do domínio marcarAcao (fac-helper-bot), por tenant — vive dentro do
4
+ * banco do próprio cliente (mesmo padrão de BotConfig/CanalConfig). Singleton
5
+ * via configId fixo, vinculado a uma connection alternativa via modelOn().
6
+ */
7
+ export interface IMarcarAcaoGuildConfig extends Document {
8
+ configId: string;
9
+ channelId: string;
10
+ cargoFaccaoId: string;
11
+ cargoMentionId: string;
12
+ }
13
+ export declare const MarcarAcaoGuildConfigSchema: mongoose.Schema<IMarcarAcaoGuildConfig, mongoose.Model<IMarcarAcaoGuildConfig, any, any, any, any, any, IMarcarAcaoGuildConfig>, {}, {}, {}, {}, mongoose.DefaultSchemaOptions, IMarcarAcaoGuildConfig, mongoose.Document<unknown, {}, IMarcarAcaoGuildConfig, {
14
+ id: string;
15
+ }, mongoose.DefaultSchemaOptions> & Omit<IMarcarAcaoGuildConfig & Required<{
16
+ _id: mongoose.Types.ObjectId;
17
+ }> & {
18
+ __v: number;
19
+ }, "id"> & {
20
+ id: string;
21
+ }, {
22
+ _id?: mongoose.SchemaDefinitionProperty<mongoose.Types.ObjectId, IMarcarAcaoGuildConfig, mongoose.Document<unknown, {}, IMarcarAcaoGuildConfig, {
23
+ id: string;
24
+ }, mongoose.DefaultSchemaOptions> & Omit<IMarcarAcaoGuildConfig & Required<{
25
+ _id: mongoose.Types.ObjectId;
26
+ }> & {
27
+ __v: number;
28
+ }, "id"> & {
29
+ id: string;
30
+ }> | undefined;
31
+ configId?: mongoose.SchemaDefinitionProperty<string, IMarcarAcaoGuildConfig, mongoose.Document<unknown, {}, IMarcarAcaoGuildConfig, {
32
+ id: string;
33
+ }, mongoose.DefaultSchemaOptions> & Omit<IMarcarAcaoGuildConfig & Required<{
34
+ _id: mongoose.Types.ObjectId;
35
+ }> & {
36
+ __v: number;
37
+ }, "id"> & {
38
+ id: string;
39
+ }> | undefined;
40
+ channelId?: mongoose.SchemaDefinitionProperty<string, IMarcarAcaoGuildConfig, mongoose.Document<unknown, {}, IMarcarAcaoGuildConfig, {
41
+ id: string;
42
+ }, mongoose.DefaultSchemaOptions> & Omit<IMarcarAcaoGuildConfig & Required<{
43
+ _id: mongoose.Types.ObjectId;
44
+ }> & {
45
+ __v: number;
46
+ }, "id"> & {
47
+ id: string;
48
+ }> | undefined;
49
+ cargoFaccaoId?: mongoose.SchemaDefinitionProperty<string, IMarcarAcaoGuildConfig, mongoose.Document<unknown, {}, IMarcarAcaoGuildConfig, {
50
+ id: string;
51
+ }, mongoose.DefaultSchemaOptions> & Omit<IMarcarAcaoGuildConfig & Required<{
52
+ _id: mongoose.Types.ObjectId;
53
+ }> & {
54
+ __v: number;
55
+ }, "id"> & {
56
+ id: string;
57
+ }> | undefined;
58
+ cargoMentionId?: mongoose.SchemaDefinitionProperty<string, IMarcarAcaoGuildConfig, mongoose.Document<unknown, {}, IMarcarAcaoGuildConfig, {
59
+ id: string;
60
+ }, mongoose.DefaultSchemaOptions> & Omit<IMarcarAcaoGuildConfig & Required<{
61
+ _id: mongoose.Types.ObjectId;
62
+ }> & {
63
+ __v: number;
64
+ }, "id"> & {
65
+ id: string;
66
+ }> | undefined;
67
+ }, IMarcarAcaoGuildConfig>;
68
+ export declare const MarcarAcaoGuildConfigModel: mongoose.Model<IMarcarAcaoGuildConfig, {}, {}, {}, mongoose.Document<unknown, {}, IMarcarAcaoGuildConfig, {}, mongoose.DefaultSchemaOptions> & IMarcarAcaoGuildConfig & Required<{
69
+ _id: mongoose.Types.ObjectId;
70
+ }> & {
71
+ __v: number;
72
+ } & {
73
+ id: string;
74
+ }, any, IMarcarAcaoGuildConfig>;
@@ -0,0 +1,8 @@
1
+ import mongoose, { Schema } from "mongoose";
2
+ export const MarcarAcaoGuildConfigSchema = new Schema({
3
+ configId: { type: String, default: "main", unique: true },
4
+ channelId: { type: String, required: true },
5
+ cargoFaccaoId: { type: String, required: true },
6
+ cargoMentionId: { type: String, required: true },
7
+ });
8
+ export const MarcarAcaoGuildConfigModel = mongoose.model("MarcarAcaoGuildConfig", MarcarAcaoGuildConfigSchema);
@@ -0,0 +1,153 @@
1
+ import mongoose, { type Document } from "mongoose";
2
+ /**
3
+ * Config do domínio pedirRec (fac-helper-bot), por tenant — mesmo padrão de
4
+ * MarcarAcaoGuildConfig. Singleton via configId fixo.
5
+ */
6
+ export interface IPedirRecGuildConfig extends Document {
7
+ configId: string;
8
+ slashGuildId: string;
9
+ slashChannelId: string;
10
+ slashCommandName: string;
11
+ mentionPollInterval: number;
12
+ scheduleTimes: string;
13
+ scheduleTimezone: string;
14
+ triggerMessage: string;
15
+ triggerUserId: string;
16
+ recGuildId: string;
17
+ recChannelId: string;
18
+ recIntervalMinutes: number;
19
+ }
20
+ export declare const PedirRecGuildConfigSchema: mongoose.Schema<IPedirRecGuildConfig, mongoose.Model<IPedirRecGuildConfig, any, any, any, any, any, IPedirRecGuildConfig>, {}, {}, {}, {}, mongoose.DefaultSchemaOptions, IPedirRecGuildConfig, mongoose.Document<unknown, {}, IPedirRecGuildConfig, {
21
+ id: string;
22
+ }, mongoose.DefaultSchemaOptions> & Omit<IPedirRecGuildConfig & Required<{
23
+ _id: mongoose.Types.ObjectId;
24
+ }> & {
25
+ __v: number;
26
+ }, "id"> & {
27
+ id: string;
28
+ }, {
29
+ _id?: mongoose.SchemaDefinitionProperty<mongoose.Types.ObjectId, IPedirRecGuildConfig, mongoose.Document<unknown, {}, IPedirRecGuildConfig, {
30
+ id: string;
31
+ }, mongoose.DefaultSchemaOptions> & Omit<IPedirRecGuildConfig & Required<{
32
+ _id: mongoose.Types.ObjectId;
33
+ }> & {
34
+ __v: number;
35
+ }, "id"> & {
36
+ id: string;
37
+ }> | undefined;
38
+ configId?: mongoose.SchemaDefinitionProperty<string, IPedirRecGuildConfig, mongoose.Document<unknown, {}, IPedirRecGuildConfig, {
39
+ id: string;
40
+ }, mongoose.DefaultSchemaOptions> & Omit<IPedirRecGuildConfig & Required<{
41
+ _id: mongoose.Types.ObjectId;
42
+ }> & {
43
+ __v: number;
44
+ }, "id"> & {
45
+ id: string;
46
+ }> | undefined;
47
+ slashGuildId?: mongoose.SchemaDefinitionProperty<string, IPedirRecGuildConfig, mongoose.Document<unknown, {}, IPedirRecGuildConfig, {
48
+ id: string;
49
+ }, mongoose.DefaultSchemaOptions> & Omit<IPedirRecGuildConfig & Required<{
50
+ _id: mongoose.Types.ObjectId;
51
+ }> & {
52
+ __v: number;
53
+ }, "id"> & {
54
+ id: string;
55
+ }> | undefined;
56
+ slashChannelId?: mongoose.SchemaDefinitionProperty<string, IPedirRecGuildConfig, mongoose.Document<unknown, {}, IPedirRecGuildConfig, {
57
+ id: string;
58
+ }, mongoose.DefaultSchemaOptions> & Omit<IPedirRecGuildConfig & Required<{
59
+ _id: mongoose.Types.ObjectId;
60
+ }> & {
61
+ __v: number;
62
+ }, "id"> & {
63
+ id: string;
64
+ }> | undefined;
65
+ slashCommandName?: mongoose.SchemaDefinitionProperty<string, IPedirRecGuildConfig, mongoose.Document<unknown, {}, IPedirRecGuildConfig, {
66
+ id: string;
67
+ }, mongoose.DefaultSchemaOptions> & Omit<IPedirRecGuildConfig & Required<{
68
+ _id: mongoose.Types.ObjectId;
69
+ }> & {
70
+ __v: number;
71
+ }, "id"> & {
72
+ id: string;
73
+ }> | undefined;
74
+ mentionPollInterval?: mongoose.SchemaDefinitionProperty<number, IPedirRecGuildConfig, mongoose.Document<unknown, {}, IPedirRecGuildConfig, {
75
+ id: string;
76
+ }, mongoose.DefaultSchemaOptions> & Omit<IPedirRecGuildConfig & Required<{
77
+ _id: mongoose.Types.ObjectId;
78
+ }> & {
79
+ __v: number;
80
+ }, "id"> & {
81
+ id: string;
82
+ }> | undefined;
83
+ scheduleTimes?: mongoose.SchemaDefinitionProperty<string, IPedirRecGuildConfig, mongoose.Document<unknown, {}, IPedirRecGuildConfig, {
84
+ id: string;
85
+ }, mongoose.DefaultSchemaOptions> & Omit<IPedirRecGuildConfig & Required<{
86
+ _id: mongoose.Types.ObjectId;
87
+ }> & {
88
+ __v: number;
89
+ }, "id"> & {
90
+ id: string;
91
+ }> | undefined;
92
+ scheduleTimezone?: mongoose.SchemaDefinitionProperty<string, IPedirRecGuildConfig, mongoose.Document<unknown, {}, IPedirRecGuildConfig, {
93
+ id: string;
94
+ }, mongoose.DefaultSchemaOptions> & Omit<IPedirRecGuildConfig & Required<{
95
+ _id: mongoose.Types.ObjectId;
96
+ }> & {
97
+ __v: number;
98
+ }, "id"> & {
99
+ id: string;
100
+ }> | undefined;
101
+ triggerMessage?: mongoose.SchemaDefinitionProperty<string, IPedirRecGuildConfig, mongoose.Document<unknown, {}, IPedirRecGuildConfig, {
102
+ id: string;
103
+ }, mongoose.DefaultSchemaOptions> & Omit<IPedirRecGuildConfig & Required<{
104
+ _id: mongoose.Types.ObjectId;
105
+ }> & {
106
+ __v: number;
107
+ }, "id"> & {
108
+ id: string;
109
+ }> | undefined;
110
+ triggerUserId?: mongoose.SchemaDefinitionProperty<string, IPedirRecGuildConfig, mongoose.Document<unknown, {}, IPedirRecGuildConfig, {
111
+ id: string;
112
+ }, mongoose.DefaultSchemaOptions> & Omit<IPedirRecGuildConfig & Required<{
113
+ _id: mongoose.Types.ObjectId;
114
+ }> & {
115
+ __v: number;
116
+ }, "id"> & {
117
+ id: string;
118
+ }> | undefined;
119
+ recGuildId?: mongoose.SchemaDefinitionProperty<string, IPedirRecGuildConfig, mongoose.Document<unknown, {}, IPedirRecGuildConfig, {
120
+ id: string;
121
+ }, mongoose.DefaultSchemaOptions> & Omit<IPedirRecGuildConfig & Required<{
122
+ _id: mongoose.Types.ObjectId;
123
+ }> & {
124
+ __v: number;
125
+ }, "id"> & {
126
+ id: string;
127
+ }> | undefined;
128
+ recChannelId?: mongoose.SchemaDefinitionProperty<string, IPedirRecGuildConfig, mongoose.Document<unknown, {}, IPedirRecGuildConfig, {
129
+ id: string;
130
+ }, mongoose.DefaultSchemaOptions> & Omit<IPedirRecGuildConfig & Required<{
131
+ _id: mongoose.Types.ObjectId;
132
+ }> & {
133
+ __v: number;
134
+ }, "id"> & {
135
+ id: string;
136
+ }> | undefined;
137
+ recIntervalMinutes?: mongoose.SchemaDefinitionProperty<number, IPedirRecGuildConfig, mongoose.Document<unknown, {}, IPedirRecGuildConfig, {
138
+ id: string;
139
+ }, mongoose.DefaultSchemaOptions> & Omit<IPedirRecGuildConfig & Required<{
140
+ _id: mongoose.Types.ObjectId;
141
+ }> & {
142
+ __v: number;
143
+ }, "id"> & {
144
+ id: string;
145
+ }> | undefined;
146
+ }, IPedirRecGuildConfig>;
147
+ export declare const PedirRecGuildConfigModel: mongoose.Model<IPedirRecGuildConfig, {}, {}, {}, mongoose.Document<unknown, {}, IPedirRecGuildConfig, {}, mongoose.DefaultSchemaOptions> & IPedirRecGuildConfig & Required<{
148
+ _id: mongoose.Types.ObjectId;
149
+ }> & {
150
+ __v: number;
151
+ } & {
152
+ id: string;
153
+ }, any, IPedirRecGuildConfig>;
@@ -0,0 +1,16 @@
1
+ import mongoose, { Schema } from "mongoose";
2
+ export const PedirRecGuildConfigSchema = new Schema({
3
+ configId: { type: String, default: "main", unique: true },
4
+ slashGuildId: { type: String, required: true },
5
+ slashChannelId: { type: String, required: true },
6
+ slashCommandName: { type: String, default: "pedirrec" },
7
+ mentionPollInterval: { type: Number, default: 10 },
8
+ scheduleTimes: { type: String, default: "11:30,18:30" },
9
+ scheduleTimezone: { type: String, default: "America/Sao_Paulo" },
10
+ triggerMessage: { type: String, default: "" },
11
+ triggerUserId: { type: String, default: "" },
12
+ recGuildId: { type: String, default: "" },
13
+ recChannelId: { type: String, default: "" },
14
+ recIntervalMinutes: { type: Number, default: 15 },
15
+ });
16
+ export const PedirRecGuildConfigModel = mongoose.model("PedirRecGuildConfig", PedirRecGuildConfigSchema);
@@ -0,0 +1,122 @@
1
+ import mongoose, { Document } from "mongoose";
2
+ /**
3
+ * Registro central de servidores/clientes gerenciados pelo fac-control-bot.
4
+ * Vive no banco PRÓPRIO do fac-control-bot (não no banco de nenhum tenant) —
5
+ * por isso o Schema é exportado separadamente: outros bots (ex. fac-helper-bot)
6
+ * vinculam esse schema numa connection `useDb("fac-control-bot")` pra descobrir
7
+ * quais servidores existem, sem duplicar a definição do shape.
8
+ */
9
+ export interface IServidor extends Document {
10
+ /** Nome de exibição do servidor/cliente gerenciado */
11
+ nome: string;
12
+ /** ID do app na Discloud (mesma conta, um token cobre todos os apps) */
13
+ discloudAppId: string;
14
+ /** Nome do banco MongoDB do cliente, no mesmo cluster (acesso direto via useDb) */
15
+ dbName: string;
16
+ /** URL do webhook do Discord para o canal de avisos (envio de embed sem o bot precisar estar no servidor) */
17
+ webhookAvisosUrl: string;
18
+ /** ID do canal dedicado deste servidor no servidor do bot de controle (painel fixo com embed) */
19
+ channelId: string;
20
+ /** Token do self-bot dedicado deste servidor, usado pelo fac-helper-bot pra operar nele */
21
+ helperBotToken?: string;
22
+ ativo: boolean;
23
+ criadoEm: Date;
24
+ }
25
+ export declare const ServidorSchema: mongoose.Schema<IServidor, mongoose.Model<IServidor, any, any, any, any, any, IServidor>, {}, {}, {}, {}, mongoose.DefaultSchemaOptions, IServidor, mongoose.Document<unknown, {}, IServidor, {
26
+ id: string;
27
+ }, mongoose.DefaultSchemaOptions> & Omit<IServidor & Required<{
28
+ _id: mongoose.Types.ObjectId;
29
+ }> & {
30
+ __v: number;
31
+ }, "id"> & {
32
+ id: string;
33
+ }, {
34
+ dbName?: mongoose.SchemaDefinitionProperty<string, IServidor, mongoose.Document<unknown, {}, IServidor, {
35
+ id: string;
36
+ }, mongoose.DefaultSchemaOptions> & Omit<IServidor & Required<{
37
+ _id: mongoose.Types.ObjectId;
38
+ }> & {
39
+ __v: number;
40
+ }, "id"> & {
41
+ id: string;
42
+ }> | undefined;
43
+ _id?: mongoose.SchemaDefinitionProperty<mongoose.Types.ObjectId, IServidor, mongoose.Document<unknown, {}, IServidor, {
44
+ id: string;
45
+ }, mongoose.DefaultSchemaOptions> & Omit<IServidor & Required<{
46
+ _id: mongoose.Types.ObjectId;
47
+ }> & {
48
+ __v: number;
49
+ }, "id"> & {
50
+ id: string;
51
+ }> | undefined;
52
+ nome?: mongoose.SchemaDefinitionProperty<string, IServidor, mongoose.Document<unknown, {}, IServidor, {
53
+ id: string;
54
+ }, mongoose.DefaultSchemaOptions> & Omit<IServidor & Required<{
55
+ _id: mongoose.Types.ObjectId;
56
+ }> & {
57
+ __v: number;
58
+ }, "id"> & {
59
+ id: string;
60
+ }> | undefined;
61
+ criadoEm?: mongoose.SchemaDefinitionProperty<Date, IServidor, mongoose.Document<unknown, {}, IServidor, {
62
+ id: string;
63
+ }, mongoose.DefaultSchemaOptions> & Omit<IServidor & Required<{
64
+ _id: mongoose.Types.ObjectId;
65
+ }> & {
66
+ __v: number;
67
+ }, "id"> & {
68
+ id: string;
69
+ }> | undefined;
70
+ channelId?: mongoose.SchemaDefinitionProperty<string, IServidor, mongoose.Document<unknown, {}, IServidor, {
71
+ id: string;
72
+ }, mongoose.DefaultSchemaOptions> & Omit<IServidor & Required<{
73
+ _id: mongoose.Types.ObjectId;
74
+ }> & {
75
+ __v: number;
76
+ }, "id"> & {
77
+ id: string;
78
+ }> | undefined;
79
+ ativo?: mongoose.SchemaDefinitionProperty<boolean, IServidor, mongoose.Document<unknown, {}, IServidor, {
80
+ id: string;
81
+ }, mongoose.DefaultSchemaOptions> & Omit<IServidor & Required<{
82
+ _id: mongoose.Types.ObjectId;
83
+ }> & {
84
+ __v: number;
85
+ }, "id"> & {
86
+ id: string;
87
+ }> | undefined;
88
+ discloudAppId?: mongoose.SchemaDefinitionProperty<string, IServidor, mongoose.Document<unknown, {}, IServidor, {
89
+ id: string;
90
+ }, mongoose.DefaultSchemaOptions> & Omit<IServidor & Required<{
91
+ _id: mongoose.Types.ObjectId;
92
+ }> & {
93
+ __v: number;
94
+ }, "id"> & {
95
+ id: string;
96
+ }> | undefined;
97
+ webhookAvisosUrl?: mongoose.SchemaDefinitionProperty<string, IServidor, mongoose.Document<unknown, {}, IServidor, {
98
+ id: string;
99
+ }, mongoose.DefaultSchemaOptions> & Omit<IServidor & Required<{
100
+ _id: mongoose.Types.ObjectId;
101
+ }> & {
102
+ __v: number;
103
+ }, "id"> & {
104
+ id: string;
105
+ }> | undefined;
106
+ helperBotToken?: mongoose.SchemaDefinitionProperty<string | undefined, IServidor, mongoose.Document<unknown, {}, IServidor, {
107
+ id: string;
108
+ }, mongoose.DefaultSchemaOptions> & Omit<IServidor & Required<{
109
+ _id: mongoose.Types.ObjectId;
110
+ }> & {
111
+ __v: number;
112
+ }, "id"> & {
113
+ id: string;
114
+ }> | undefined;
115
+ }, IServidor>;
116
+ export declare const ServidorModel: mongoose.Model<IServidor, {}, {}, {}, mongoose.Document<unknown, {}, IServidor, {}, mongoose.DefaultSchemaOptions> & IServidor & Required<{
117
+ _id: mongoose.Types.ObjectId;
118
+ }> & {
119
+ __v: number;
120
+ } & {
121
+ id: string;
122
+ }, any, IServidor>;
@@ -0,0 +1,12 @@
1
+ import mongoose, { Schema } from "mongoose";
2
+ export const ServidorSchema = new Schema({
3
+ nome: { type: String, required: true },
4
+ discloudAppId: { type: String, required: true },
5
+ dbName: { type: String, required: true },
6
+ webhookAvisosUrl: { type: String, required: true },
7
+ channelId: { type: String, required: true },
8
+ helperBotToken: { type: String },
9
+ ativo: { type: Boolean, default: true },
10
+ criadoEm: { type: Date, default: Date.now },
11
+ });
12
+ export const ServidorModel = mongoose.model("Servidor", ServidorSchema);
@@ -24,7 +24,7 @@ export { FarmModel } from "./Farm.js";
24
24
  export type { IFarm } from "./Farm.js";
25
25
  export { FarmValidacaoStateModel } from "./FarmValidacaoState.js";
26
26
  export type { IFarmPendenteDoc, IFarmValidacaoState, IItemOrfaoDoc } from "./FarmValidacaoState.js";
27
- export { FeatureTogglesConfigModel } from "./FeatureTogglesConfig.js";
27
+ export { FeatureTogglesConfigModel, FeatureTogglesConfigSchema } from "./FeatureTogglesConfig.js";
28
28
  export type { IFeatureTogglesConfig } from "./FeatureTogglesConfig.js";
29
29
  export { MembroCadastroModel } from "./MembroCadastro.js";
30
30
  export type { IMembroCadastro } from "./MembroCadastro.js";
@@ -32,6 +32,14 @@ export { MensagemRecrutamentoModel } from "./MensagemRecrutamento.js";
32
32
  export type { IMensagemRecrutamento } from "./MensagemRecrutamento.js";
33
33
  export { MensagemRotacaoModel } from "./MensagemRotacao.js";
34
34
  export type { IMensagemRotacao } from "./MensagemRotacao.js";
35
+ export { ServidorModel, ServidorSchema } from "./Servidor.js";
36
+ export type { IServidor } from "./Servidor.js";
37
+ export { MarcarAcaoGuildConfigModel, MarcarAcaoGuildConfigSchema } from "./MarcarAcaoGuildConfig.js";
38
+ export type { IMarcarAcaoGuildConfig } from "./MarcarAcaoGuildConfig.js";
39
+ export { PedirRecGuildConfigModel, PedirRecGuildConfigSchema } from "./PedirRecGuildConfig.js";
40
+ export type { IPedirRecGuildConfig } from "./PedirRecGuildConfig.js";
41
+ export { LogsExporterGuildConfigModel, LogsExporterGuildConfigSchema } from "./LogsExporterGuildConfig.js";
42
+ export type { ILogsExporterChannel, ILogsExporterGuildConfig, ILogsExporterSplitRule, } from "./LogsExporterGuildConfig.js";
35
43
  export { RegistroOlheiroModel } from "./RegistroOlheiro.js";
36
44
  export type { IRegistroOlheiro } from "./RegistroOlheiro.js";
37
45
  export { SolicitacaoUpModel } from "./SolicitacaoUp.js";
@@ -11,10 +11,14 @@ export { CargoConfigModel } from "./CargoConfig.js";
11
11
  export { CraftConfigModel } from "./CraftConfig.js";
12
12
  export { FarmModel } from "./Farm.js";
13
13
  export { FarmValidacaoStateModel } from "./FarmValidacaoState.js";
14
- export { FeatureTogglesConfigModel } from "./FeatureTogglesConfig.js";
14
+ export { FeatureTogglesConfigModel, FeatureTogglesConfigSchema } from "./FeatureTogglesConfig.js";
15
15
  export { MembroCadastroModel } from "./MembroCadastro.js";
16
16
  export { MensagemRecrutamentoModel } from "./MensagemRecrutamento.js";
17
17
  export { MensagemRotacaoModel } from "./MensagemRotacao.js";
18
+ export { ServidorModel, ServidorSchema } from "./Servidor.js";
19
+ export { MarcarAcaoGuildConfigModel, MarcarAcaoGuildConfigSchema } from "./MarcarAcaoGuildConfig.js";
20
+ export { PedirRecGuildConfigModel, PedirRecGuildConfigSchema } from "./PedirRecGuildConfig.js";
21
+ export { LogsExporterGuildConfigModel, LogsExporterGuildConfigSchema } from "./LogsExporterGuildConfig.js";
18
22
  export { RegistroOlheiroModel } from "./RegistroOlheiro.js";
19
23
  export { SolicitacaoUpModel } from "./SolicitacaoUp.js";
20
24
  export { UpRegistroModel } from "./UpRegistro.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fac-shared-db",
3
- "version": "1.1.1",
3
+ "version": "1.2.0",
4
4
  "type": "module",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",