@mastra/mongodb 1.0.0-beta.7 → 1.0.0-beta.8

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,5 +1,6 @@
1
- import type { MongoClientOptions } from 'mongodb';
1
+ import type { MongoClientOptions, IndexSpecification, CreateIndexesOptions } from 'mongodb';
2
2
  import type { ConnectorHandler } from './connectors/base.js';
3
+ import type { MongoDBConnector } from './connectors/MongoDBConnector.js';
3
4
  /**
4
5
  * Base configuration options shared across MongoDB configurations
5
6
  */
@@ -25,6 +26,36 @@ export type MongoDBBaseConfig = {
25
26
  * // No auto-init, tables must already exist
26
27
  */
27
28
  disableInit?: boolean;
29
+ /**
30
+ * When true, default indexes will not be created during initialization.
31
+ * This is useful when:
32
+ * 1. You want to manage indexes separately or use custom indexes only
33
+ * 2. Default indexes don't match your query patterns
34
+ * 3. You want to reduce initialization time in development
35
+ *
36
+ * @default false
37
+ */
38
+ skipDefaultIndexes?: boolean;
39
+ /**
40
+ * Custom indexes to create during initialization.
41
+ * These indexes are created in addition to default indexes (unless skipDefaultIndexes is true).
42
+ *
43
+ * Each index must specify which collection it belongs to. The store will route each index
44
+ * to the appropriate domain based on the collection name.
45
+ *
46
+ * @example
47
+ * ```typescript
48
+ * const store = new MongoDBStore({
49
+ * url: 'mongodb://localhost:27017',
50
+ * dbName: 'mastra',
51
+ * indexes: [
52
+ * { collection: 'mastra_threads', keys: { 'metadata.type': 1 } },
53
+ * { collection: 'mastra_messages', keys: { 'metadata.status': 1 }, options: { sparse: true } },
54
+ * ],
55
+ * });
56
+ * ```
57
+ */
58
+ indexes?: MongoDBIndexConfig[];
28
59
  };
29
60
  export type MongoDBConfig = DatabaseConfig | (MongoDBBaseConfig & {
30
61
  connectorHandler: ConnectorHandler;
@@ -34,4 +65,39 @@ export type DatabaseConfig = MongoDBBaseConfig & {
34
65
  dbName: string;
35
66
  options?: MongoClientOptions;
36
67
  };
68
+ /**
69
+ * Configuration for MongoDB domains.
70
+ * Domains can receive either:
71
+ * - An existing connector (internal: passed from main store)
72
+ * - A connectorHandler (user: custom connection management)
73
+ * - Database config (user: standard url/dbName config)
74
+ */
75
+ export type MongoDBDomainConfig = {
76
+ connector: MongoDBConnector;
77
+ skipDefaultIndexes?: boolean;
78
+ indexes?: MongoDBIndexConfig[];
79
+ } | {
80
+ connectorHandler: ConnectorHandler;
81
+ disableInit?: boolean;
82
+ skipDefaultIndexes?: boolean;
83
+ indexes?: MongoDBIndexConfig[];
84
+ } | {
85
+ url: string;
86
+ dbName: string;
87
+ options?: MongoClientOptions;
88
+ disableInit?: boolean;
89
+ skipDefaultIndexes?: boolean;
90
+ indexes?: MongoDBIndexConfig[];
91
+ };
92
+ /**
93
+ * MongoDB index definition for the getDefaultIndexDefinitions pattern.
94
+ */
95
+ export interface MongoDBIndexConfig {
96
+ /** Collection name */
97
+ collection: string;
98
+ /** Index specification (e.g., { id: 1 } or { thread_id: 1, createdAt: -1 }) */
99
+ keys: IndexSpecification;
100
+ /** Index options (e.g., { unique: true }) */
101
+ options?: CreateIndexesOptions;
102
+ }
37
103
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX;;;;;;;;;;;;;;;;;;OAkBG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,aAAa,GACrB,cAAc,GACd,CAAC,iBAAiB,GAAG;IACnB,gBAAgB,EAAE,gBAAgB,CAAC;CACpC,CAAC,CAAC;AAEP,MAAM,MAAM,cAAc,GAAG,iBAAiB,GAAG;IAC/C,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC5F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEtE;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX;;;;;;;;;;;;;;;;;;OAkBG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;;;OAQG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;;;;;;;;;;;;;;;;OAkBG;IACH,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,aAAa,GACrB,cAAc,GACd,CAAC,iBAAiB,GAAG;IACnB,gBAAgB,EAAE,gBAAgB,CAAC;CACpC,CAAC,CAAC;AAEP,MAAM,MAAM,cAAc,GAAG,iBAAiB,GAAG;IAC/C,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,GAC3B;IAAE,SAAS,EAAE,gBAAgB,CAAC;IAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAA;CAAE,GAC7F;IACE,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAChC,GACD;IACE,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAChC,CAAC;AAEN;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,sBAAsB;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,IAAI,EAAE,kBAAkB,CAAC;IACzB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/mongodb",
3
- "version": "1.0.0-beta.7",
3
+ "version": "1.0.0-beta.8",
4
4
  "description": "MongoDB provider for Mastra - includes vector store capabilities",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -32,10 +32,10 @@
32
32
  "tsup": "^8.5.0",
33
33
  "typescript": "^5.8.3",
34
34
  "vitest": "4.0.12",
35
- "@internal/lint": "0.0.53",
36
- "@internal/types-builder": "0.0.28",
37
35
  "@internal/storage-test-utils": "0.0.49",
38
- "@mastra/core": "1.0.0-beta.13"
36
+ "@internal/types-builder": "0.0.28",
37
+ "@mastra/core": "1.0.0-beta.15",
38
+ "@internal/lint": "0.0.53"
39
39
  },
40
40
  "peerDependencies": {
41
41
  "@mastra/core": ">=1.0.0-0 <2.0.0-0"
@@ -1,50 +0,0 @@
1
- import { StoreOperations } from '@mastra/core/storage';
2
- import type { StorageColumn, TABLE_NAMES } from '@mastra/core/storage';
3
- import type { ConnectorHandler } from '../../connectors/base.js';
4
- export interface MongoDBOperationsConfig {
5
- connector: ConnectorHandler;
6
- }
7
- export declare class StoreOperationsMongoDB extends StoreOperations {
8
- #private;
9
- constructor(config: MongoDBOperationsConfig);
10
- getCollection(collectionName: string): Promise<import("mongodb").Collection<import("mongodb").Document>>;
11
- hasColumn(_table: string, _column: string): Promise<boolean>;
12
- createTable(): Promise<void>;
13
- alterTable(_args: {
14
- tableName: TABLE_NAMES;
15
- schema: Record<string, StorageColumn>;
16
- ifNotExists: string[];
17
- }): Promise<void>;
18
- clearTable({ tableName }: {
19
- tableName: TABLE_NAMES;
20
- }): Promise<void>;
21
- dropTable({ tableName }: {
22
- tableName: TABLE_NAMES;
23
- }): Promise<void>;
24
- private processJsonbFields;
25
- insert({ tableName, record }: {
26
- tableName: TABLE_NAMES;
27
- record: Record<string, any>;
28
- }): Promise<void>;
29
- batchInsert({ tableName, records }: {
30
- tableName: TABLE_NAMES;
31
- records: Record<string, any>[];
32
- }): Promise<void>;
33
- load<R>({ tableName, keys }: {
34
- tableName: TABLE_NAMES;
35
- keys: Record<string, string>;
36
- }): Promise<R | null>;
37
- update({ tableName, keys, data, }: {
38
- tableName: TABLE_NAMES;
39
- keys: Record<string, any>;
40
- data: Record<string, any>;
41
- }): Promise<void>;
42
- batchUpdate({ tableName, updates, }: {
43
- tableName: TABLE_NAMES;
44
- updates: Array<{
45
- keys: Record<string, any>;
46
- data: Record<string, any>;
47
- }>;
48
- }): Promise<void>;
49
- }
50
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/storage/domains/operations/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAyC,eAAe,EAAiB,MAAM,sBAAsB,CAAC;AAC7G,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,gBAAgB,CAAC;CAC7B;AACD,qBAAa,sBAAuB,SAAQ,eAAe;;gBAG7C,MAAM,EAAE,uBAAuB;IAKrC,aAAa,CAAC,cAAc,EAAE,MAAM;IAIpC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM5D,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,UAAU,CAAC,KAAK,EAAE;QACtB,SAAS,EAAE,WAAW,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACtC,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIX,UAAU,CAAC,EAAE,SAAS,EAAE,EAAE;QAAE,SAAS,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBpE,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE;QAAE,SAAS,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBzE,OAAO,CAAC,kBAAkB;IAkBpB,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE;QAAE,SAAS,EAAE,WAAW,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBrG,WAAW,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;QAAE,SAAS,EAAE,WAAW,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB9G,IAAI,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;QAAE,SAAS,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAkBzG,MAAM,CAAC,EACX,SAAS,EACT,IAAI,EACJ,IAAI,GACL,EAAE;QACD,SAAS,EAAE,WAAW,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC3B,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBX,WAAW,CAAC,EAChB,SAAS,EACT,OAAO,GACR,EAAE;QACD,SAAS,EAAE,WAAW,CAAC;QACvB,OAAO,EAAE,KAAK,CAAC;YACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;SAC3B,CAAC,CAAC;KACJ,GAAG,OAAO,CAAC,IAAI,CAAC;CAkClB"}