diff --git a/backend/src/config/index.ts b/backend/src/config/index.ts index db60d2b84..edf409104 100644 --- a/backend/src/config/index.ts +++ b/backend/src/config/index.ts @@ -1,24 +1,10 @@ // ATTENTION: DO NOT PUT ANY SECRETS IN HERE (or the .env) -// Load Package Details for some default values -const pkg = require('../../package') - -const environment = { - NODE_ENV: process.env.NODE_ENV, - DEBUG: process.env.NODE_ENV !== 'production' || false, - PRODUCTION: process.env.NODE_ENV === 'production' || false, - ALLOW_REGISTER: process.env.ALLOW_REGISTER !== 'false', -} - const server = { LOGIN_API_URL: process.env.LOGIN_API_URL || 'http://localhost/login_api/', COMMUNITY_API_URL: process.env.COMMUNITY_API_URL || 'http://localhost/api/', } -const CONFIG = { - ...environment, - ...server, - APP_VERSION: pkg.version, -} +const CONFIG = { ...server } export default CONFIG diff --git a/backend/src/graphql/datasources/loginServer.ts b/backend/src/graphql/datasources/loginServer.ts new file mode 100644 index 000000000..ff802bce8 --- /dev/null +++ b/backend/src/graphql/datasources/loginServer.ts @@ -0,0 +1,23 @@ +import { RESTDataSource } from 'apollo-datasource-rest' +import CONFIG from '../../config' +import { Group } from '../models/Group' + +export class LoginServerAPI extends RESTDataSource { + constructor() { + super() + this.baseURL = CONFIG.LOGIN_API_URL + } + + async getAllGroupAliases(): Promise { + return new Promise(() => { + const response = await this.post('networkInfos', { ask: ['groups'] }) + const groups: Group[] = [] + response.data.forEach((element: string) => { + const group = new Group() + group.alias = element + groups.push(group) + })(groups) + return groups + }) + } +} diff --git a/backend/src/graphql/datasources/login_server.ts b/backend/src/graphql/datasources/login_server.ts deleted file mode 100644 index 870c90382..000000000 --- a/backend/src/graphql/datasources/login_server.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { RESTDataSource } from 'apollo-datasource-rest' - -export class LoginServerAPI extends RESTDataSource { - constructor() { - super() - this.baseURL = 'https://api.spacexdata.com/v2/' - } -} diff --git a/backend/src/graphql/models/Group.ts b/backend/src/graphql/models/Group.ts new file mode 100644 index 000000000..45582225e --- /dev/null +++ b/backend/src/graphql/models/Group.ts @@ -0,0 +1,26 @@ +import { Entity, BaseEntity, PrimaryGeneratedColumn, Column } from 'typeorm' +import { ObjectType, Field, ID } from 'type-graphql' + +@Entity() +@ObjectType() +export class Group extends BaseEntity { + @Field(() => ID) + @PrimaryGeneratedColumn() + id: number + + @Field(() => String) + @Column({ length: 190 }) + alias: string + + @Field(() => String) + @Column() + name: string + + @Field(() => String) + @Column('text') + description: string + + @Field(() => String) + @Column() + url: string +} diff --git a/backend/src/graphql/resolvers/GroupResolver.ts b/backend/src/graphql/resolvers/GroupResolver.ts new file mode 100644 index 000000000..b66908470 --- /dev/null +++ b/backend/src/graphql/resolvers/GroupResolver.ts @@ -0,0 +1,17 @@ +import { Resolver, Query, Mutation, Arg } from 'type-graphql' +import { Group } from '../models/Group' +import { LoginServerAPI } from '../datasources/loginServer' +@Resolver() +export class UserResolver { + @Query(() => [Group]) + groups(): Group[] { + const loginServer = new LoginServerAPI() + return loginServer.getAllGroupAliases() + } + + @Query(() => Group) + group(@Arg('id') id: string): Promise { + return Group.findOne({ where: { id } }) + } + +} diff --git a/backend/src/index.ts b/backend/src/index.ts index 453a5fdbc..fdc768410 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -4,6 +4,8 @@ import { graphqlHTTP } from 'express-graphql' // import { createConnection } from 'typeorm' import { buildSchema } from 'type-graphql' import { BookResolver } from './graphql/resolvers/BookResolver' +import { UserResolver } from './graphql/resolvers/UserResolver' +import LoginServerAPI = require('./graphql/datasources/loginServer') // import queryComplexity, { simpleEstimator, fieldConfigEstimator } from "graphql-query-complexity"; async function main() {