MCPcopy
hub / github.com/eveningkid/denodb / query

Method query

lib/connectors/mongodb-connector.ts:64–303  ·  view source on GitHub ↗
(queryDescription: QueryDescription)

Source from the content-addressed store, hash-verified

62 }
63
64 async query(queryDescription: QueryDescription): Promise<any | any[]> {
65 await this._makeConnection();
66
67 if (queryDescription.type === "create") {
68 // There is no need to initialize collections in MongoDB
69 return [];
70 }
71
72 const collection = this._database!.collection(queryDescription.table!);
73
74 let wheres: { [k: string]: any } = {};
75 if (queryDescription.wheres) {
76 for (const whereClause of queryDescription.wheres) {
77 if (whereClause.field === "_id") {
78 whereClause.value = new Bson.ObjectId(whereClause.value);
79 }
80 }
81
82 wheres = queryDescription.wheres.reduce((prev, curr) => {
83 let mongoOperator = "$eq";
84
85 switch (curr.operator) {
86 case "<":
87 mongoOperator = "$lt";
88 break;
89
90 case "<=":
91 mongoOperator = "$lte";
92 break;
93
94 case ">":
95 mongoOperator = "$gt";
96 break;
97
98 case ">=":
99 mongoOperator = "$gte";
100 break;
101 }
102
103 return {
104 ...prev,
105 [curr.field]: {
106 [mongoOperator]: curr.value,
107 },
108 };
109 }, {});
110 }
111
112 let results: any[] = [];
113
114 switch (queryDescription.type) {
115 case "drop":
116 await collection.deleteMany({});
117 break;
118
119 case "insert":
120 const defaultedValues = queryDescription.schema.defaults;
121 let values = Array.isArray(queryDescription.values)

Callers

nothing calls this directly

Calls 3

_makeConnectionMethod · 0.95
findMethod · 0.45
countMethod · 0.45

Tested by

no test coverage detected