diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
new file mode 100644
index 0000000..29f8afa
--- /dev/null
+++ b/.idea/codeStyles/Project.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 0000000..79ee123
--- /dev/null
+++ b/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/graphql-server-for-polaris.iml b/.idea/graphql-server-for-polaris.iml
index 24643cc..d16780b 100644
--- a/.idea/graphql-server-for-polaris.iml
+++ b/.idea/graphql-server-for-polaris.iml
@@ -8,5 +8,8 @@
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
index 4281815..1c4acc9 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -3,6 +3,9 @@
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index 94a25f7..f66dd4f 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -1,6 +1,8 @@
-
+
+
+
\ No newline at end of file
diff --git a/context-builder.ts b/context-builder.ts
index 2067ecd..6aaf587 100644
--- a/context-builder.ts
+++ b/context-builder.ts
@@ -1,13 +1,13 @@
import {GraphQLLogger, PolarisGraphQLLogger} from "@enigmatis/polaris-graphql-logger";
-import {DeltaMiddlewareContext} from '@enigmatis/polaris-delta-middleware';
-import { PolarisConnection } from "@enigmatis/polaris-typeorm/src/connections/connection";
-
-export interface PolarisContext extends DeltaMiddlewareContext {
+import {PolarisBaseContext} from "@enigmatis/polaris-common"
+import { Connection } from "@enigmatis/polaris-typeorm";
+export interface PolarisContext extends PolarisBaseContext{
}
export class ContextBuilder {
private _logger: GraphQLLogger;
+ private _res: any;
private _dataVersion: number;
private _realityId: number;
private _includeLinkedOper: boolean;
@@ -40,21 +40,25 @@ export class ContextBuilder {
this._includeLinkedOper = includeLinkedOper == "false"? false: true;
}
+ res(res){
+ this._res = res;
+ }
+
build(): PolarisContext {
- return {logger: this._logger, dataVersion: this._dataVersion};
+ return {logger: this._logger, dataVersion: this._dataVersion, res: this._res};
}
}
export class ContextInitializer {
private readonly logger: GraphQLLogger;
- private readonly polarisConnection: PolarisConnection;
+ private readonly polarisConnection: Connection;
- constructor(logger: GraphQLLogger, polarisConnection: PolarisConnection) {
+ constructor(logger: GraphQLLogger, polarisConnection: Connection) {
this.logger = logger;
this.polarisConnection = polarisConnection;
}
- async initializeContextForRequest({req}) {
+ async initializeContextForRequest({req, res}) {
const contextBuilder = new ContextBuilder();
let dataVersionHeader = req.headers['data-version'];
let realityIdHeader = req.headers['reality-id'];
@@ -69,8 +73,10 @@ export class ContextInitializer {
contextBuilder.includeLinkedOper(includeLinkedOper);
}
contextBuilder.realityId(realityIdHeader);
+ contextBuilder.res(res);
let context: PolarisContext = contextBuilder.build();
+ res.locals.irrelevantEntities = {};
this.polarisConnection.manager.queryRunner.data.context = context;
return context;
}
-}
\ No newline at end of file
+}
diff --git a/index.ts b/index.ts
index bf3ef1a..2e682fa 100644
--- a/index.ts
+++ b/index.ts
@@ -5,15 +5,16 @@ import {applyMiddleware} from 'graphql-middleware';
import {
dataVersionMiddleware,
softDeletedMiddleware,
- ExtensionsPlugin
-} from '../polaris-delta-middleware';
-import {realitiesMiddleware} from '../polaris-realities-middleware'
+ ExtensionsPlugin,
+ realitiesMiddleware,
+ irrelevantEntitiesMiddleware
+} from '@enigmatis/polaris-middlewares';
import {
repositoryEntityTypeDefs,
scalarsResolvers,
scalarsTypeDefs
-} from '../polaris-schema';
-import {ContextInitializer} from "./context-builder";
+} from '@enigmatis/polaris-schema';
+import {ContextInitializer, PolarisContext} from "./context-builder";
import {Book} from "./dal/book";
import {
CommonModel,
@@ -21,6 +22,7 @@ import {
createPolarisConnection,
ConnectionOptions
} from '../polaris-typeorm';
+import {Like} from '@enigmatis/polaris-typeorm'
import {PolarisGraphQLLogger} from '@enigmatis/polaris-graphql-logger';
import "reflect-metadata";
@@ -41,11 +43,7 @@ const books = [
let connectionOptions: ConnectionOptions = {
type: "postgres",
- host: "localhost",
- port: 5432,
- username: "postgres",
- password: "Aa123456",
- database: "postgres",
+ url:"postgres://dbgazwwm:2ZIUE9vCEh-u-yHNENAhxbgrVJchkg8d@manny.db.elephantsql.com:5432/dbgazwwm",
entities: [
__dirname + '/dal/*.ts',
CommonModel,
@@ -63,22 +61,32 @@ const applicationLogProperties = {
version: '1'
};
-const polarisGraphQLLogger = new PolarisGraphQLLogger(applicationLogProperties, {
+const polarisGraphQLLogger = new PolarisGraphQLLogger(applicationLogProperties, {
loggerLevel: 'debug',
writeToConsole: true,
writeFullMessageToConsole: false
});
const play = async () => {
- const connection = await createPolarisConnection(connectionOptions,{});
+ // @ts-ignore
+ const connection = await createPolarisConnection(connectionOptions, polarisGraphQLLogger);
let initDb = async () => {
- await connection.dropDatabase();
+ const tables = ['user', 'profile', 'book', 'author', 'library', 'dataVersion'];
+ for (const table of tables) {
+ if (connection.manager) {
+ try {
+ await connection.manager.getRepository(table).query('DELETE FROM "' + table + '";');
+ }catch (e) {
+
+ }
+ }
+ }
await connection.synchronize();
let bookRepo = connection.getRepository(Book);
let book1 = new Book('Harry Potter and the Chamber of Secrets', 'J.K. Rowling');
let book2 = new Book('Jurassic Park', 'Michael Crichton');
- // await bookRepo.save([book1, book2]);
+ await bookRepo.save([book1, book2]);
};
const typeDefs = gql`
@@ -103,6 +111,7 @@ const play = async () => {
# (A "Mutation" type will be covered later on.)
type Query {
books: [Book]
+ booksStartWith(startWith: String!): [Book]
bla: String
}
type Mutation {
@@ -118,6 +127,11 @@ const play = async () => {
let books = await bookRepo.find();
return books;
},
+ booksStartWith: async (root, args, context, info) => {
+ const bookRepo = connection.getRepository(Book);
+ let books = await bookRepo.find({where:{title: Like(`${args.startWith}%`)}});
+ return books;
+ },
bla: () => "bla"
},
Mutation: {
@@ -141,10 +155,10 @@ const play = async () => {
resolvers: [resolvers, scalarsResolvers]
});
- const executableSchema = applyMiddleware(schema, dataVersionMiddleware, softDeletedMiddleware, realitiesMiddleware);
+ const executableSchema = applyMiddleware(schema, dataVersionMiddleware, softDeletedMiddleware, realitiesMiddleware, irrelevantEntitiesMiddleware);
const config: ApolloServerExpressConfig = {
schema: executableSchema,
- context: ({req}) => new ContextInitializer(polarisGraphQLLogger, connection).initializeContextForRequest({req}),
+ context: ({req,res}) => new ContextInitializer(polarisGraphQLLogger, connection).initializeContextForRequest({req, res}),
plugins: [() => new ExtensionsPlugin(connection.getRepository(DataVersion))],
};
diff --git a/package.json b/package.json
index f20cf63..1d2a392 100644
--- a/package.json
+++ b/package.json
@@ -4,7 +4,7 @@
"description": "",
"main": "index.js",
"scripts": {
- "link": "npm link @enigmatis/polaris-schema && npm link @enigmatis/polaris-delta-middleware && npm link @enigmatis/polaris-realities-middleware && npm link @enigmatis/polaris-graphql-logger && npm link @enigmatis/polaris-typeorm",
+ "link": "npm link @enigmatis/polaris-schema && npm link @enigmatis/polaris-middlewares && npm link @enigmatis/polaris-graphql-logger && npm link @enigmatis/polaris-typeorm && npm link @enigmatis/polaris-common",
"test": "echo \"Error: no test specified\" && exit 1",
"start": "tsc & ts-node index.ts"
},