@accounts/module-mongo
Version:
MongoDB adaptor GraphQL Module
54 lines • 2.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createAccountsMongoModule = void 0;
const graphql_modules_1 = require("graphql-modules");
const server_1 = require("@accounts/server");
const types_1 = require("@accounts/types");
const mongo_1 = require("@accounts/mongo");
const mongodb_1 = require("mongodb");
function createAccountsMongoModule({ type = types_1.DatabaseType.Both, dbConn, storage: { uri = 'mongodb://localhost:27017', name = 'accounts-js' } = {}, ...config } = {}) {
const getModule = (conn) => (0, graphql_modules_1.createModule)({
typeDefs: (0, graphql_modules_1.gql) `
extend type Query {
_accounts_mongo: String
}
`,
id: `accounts-mongo-${type}`,
providers: () => {
const providers = [
{
provide: mongo_1.AccountsMongoConfigToken,
useValue: config,
},
{
provide: mongo_1.MongoConnectionToken,
useValue: conn,
},
];
if (type !== types_1.DatabaseType.Sessions) {
providers.push({
provide: server_1.DatabaseInterfaceUserToken,
useClass: mongo_1.Mongo,
global: true,
});
}
if (type !== types_1.DatabaseType.User) {
providers.push({
provide: server_1.DatabaseInterfaceSessionsToken,
...(type === types_1.DatabaseType.Sessions ? { useClass: mongo_1.Mongo } : { useValue: undefined }),
global: true,
});
}
return providers;
},
});
return dbConn
? getModule(dbConn)
: new Promise((resolve) => {
mongodb_1.MongoClient.connect(uri).then((client) => {
resolve(getModule(client.db(name)));
});
});
}
exports.createAccountsMongoModule = createAccountsMongoModule;
//# sourceMappingURL=index.js.map