Skip to content

Commit

Permalink
chore: update way to get query resolvers and schema
Browse files Browse the repository at this point in the history
  • Loading branch information
mlaguardia committed Jun 7, 2022
1 parent 3dccbe7 commit e3b57fb
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 16 deletions.
6 changes: 3 additions & 3 deletions src/apollo-server-config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,10 @@ const context = async ({ req, connection }) => {

const generateDatasources = (datasourcesArray) => {
const datasources = {};
datasourcesArray.map((DataSource) => {

for (const DataSource of datasourcesArray) {
datasources[DataSource.name] = new DataSource();
return true;
});
}

return datasources;
};
Expand Down
14 changes: 7 additions & 7 deletions src/datasources/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@ Auto export all datasources
*/

import * as glob from 'glob';
import * as path from 'path';
import { pull } from 'lodash';
import * as glob from "glob";
import * as path from "path";
import { pull } from "lodash";

let datasourceFiles = glob.sync(path.resolve(__dirname, './*.ts'))
.map(p => path.basename(p));
let datasourceFiles = glob
.sync(path.resolve(__dirname, "./*.ts"))
.map((p) => path.basename(p));


datasourceFiles = pull(datasourceFiles, 'index.ts');
datasourceFiles = pull(datasourceFiles, "index.ts");

const dataSources = [];

Expand Down
4 changes: 4 additions & 0 deletions src/schema/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ queryFiles.forEach((queryFile) => {

const rootQuery = gql`
scalar Date
type Query {
${queries.map((n) => n.query).join("\n")}
}
`;

export const queryTypeDefs: Array<DocumentNode> = [rootQuery];
Expand Down
3 changes: 2 additions & 1 deletion src/schema/resolvers/Query/me.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ export default {
me: User
`,
resolver: async (_, args, { dataSources }) => {
return dataSources.User.me();
const meResponse = await dataSources.Users.me();
return meResponse.user;
},
};
26 changes: 21 additions & 5 deletions src/schema/resolvers/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,20 @@ queryFiles.forEach((queryFile) => {
queries.push(Query);
});

const queryResolvers = [];

let queryResolverFiles = glob
.sync(path.resolve(__dirname, "./QueryResolvers/*.ts"))
.map((p) => path.basename(p));
.sync(path.resolve(__dirname, "./QueryResolvers/**/*.ts"))
.map((p) => p);

queryResolverFiles.forEach((queryResolverFile) => {
const QueryResolver = require(`./QueryResolvers/${queryResolverFile}`)
.default; // eslint-disable-line global-require,import/no-dynamic-require
queries.push(QueryResolver);
const name = path.basename(queryResolverFile);
const splitName = queryResolverFile.split("/QueryResolvers/");

const nameFolder = splitName[1].replace("/" + name, "");

const QueryResolver = require(`${queryResolverFile}`).default; // eslint-disable-line global-require,import/no-dynamic-require
queryResolvers.push({ name: nameFolder, resObj: QueryResolver });
});

export const allQueryResolvers = { Query: {} };
Expand All @@ -30,6 +36,15 @@ queries.forEach((q) => {
allQueryResolvers.Query[q.name] = q.resolver;
});

export const resolvers = {};

for (const item of queryResolvers) {
let obj = {};

obj[item.resObj.name] = item.resObj.resolver;
resolvers[item.name] = obj;
}

export default {
Date: new GraphQLScalarType({
name: "Date",
Expand All @@ -48,4 +63,5 @@ export default {
},
}),
...allQueryResolvers,
...resolvers,
};

0 comments on commit e3b57fb

Please sign in to comment.