@accounter/server
Version:
Accounter GraphQL server
39 lines • 1.55 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import DataLoader from 'dataloader';
import { Injectable, Scope } from 'graphql-modules';
import { sql } from '@pgtyped/runtime';
import { TenantAwareDBClient } from '../../app-providers/tenant-db-client.js';
const getBusinessUsersByAuth0Ids = sql `
SELECT user_id, auth0_user_id
FROM accounter_schema.business_users
WHERE auth0_user_id IN $$auth0UserIds;
`;
const insertBusinessUser = sql `
INSERT INTO accounter_schema.business_users (user_id, auth0_user_id, business_id, role_id)
VALUES ($userId, $auth0UserId, $ownerId, $roleId);
`;
let BusinessUsersProvider = class BusinessUsersProvider {
db;
constructor(db) {
this.db = db;
}
async batchBusinessUsersByAuth0Ids(auth0UserIds) {
const businessUsers = await getBusinessUsersByAuth0Ids.run({
auth0UserIds: auth0UserIds ? [...auth0UserIds] : [],
}, this.db);
return auth0UserIds.map(auth0UserId => businessUsers.filter(t => t.auth0_user_id === auth0UserId));
}
getBusinessUsersByAuth0IdsLoader = new DataLoader((auth0UserIds) => this.batchBusinessUsersByAuth0Ids(auth0UserIds));
async insertBusinessUser(params) {
return insertBusinessUser.run(params, this.db);
}
};
BusinessUsersProvider = __decorate([
Injectable({
scope: Scope.Operation,
global: true,
}),
__metadata("design:paramtypes", [TenantAwareDBClient])
], BusinessUsersProvider);
export { BusinessUsersProvider };
//# sourceMappingURL=business-users.provider.js.map