Skip to content

Commit

Permalink
refactor:
Browse files Browse the repository at this point in the history
BREAKING CHANGE: polaris types
  • Loading branch information
osher-sade committed Feb 27, 2020
1 parent 08182b3 commit 726f4f8
Show file tree
Hide file tree
Showing 13 changed files with 82 additions and 83 deletions.
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,9 @@
"@enigmatis/polaris-common": "^1.1.1",
"@enigmatis/polaris-graphql-logger": "^1.4.1",
"@enigmatis/polaris-logs": "^2.8.1",
"@enigmatis/polaris-middlewares": "^1.3.1",
"@enigmatis/polaris-middlewares": "^1.3.2",
"@enigmatis/polaris-schema": "^1.0.6",
"@enigmatis/polaris-typeorm": "^1.1.15",
"@enigmatis/polaris-typeorm": "^2.0.0",
"apollo-server-express": "^2.10.1",
"apollo-server-plugin-base": "^0.6.10",
"deepmerge": "^4.2.2",
Expand Down
4 changes: 2 additions & 2 deletions src/config/polaris-server-config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import {
ApplicationProperties,
LoggerConfiguration,
} from '@enigmatis/polaris-logs';
import { Connection } from '@enigmatis/polaris-typeorm';
import { PolarisConnection } from '@enigmatis/polaris-typeorm';
import { ApolloServerExpressConfig } from 'apollo-server-express';
import { DocumentNode } from 'graphql';
import { IResolvers } from 'graphql-tools';
Expand All @@ -21,6 +21,6 @@ export interface PolarisServerConfig extends ApolloServerExpressConfig {
allowSubscription: boolean;
customMiddlewares?: any[];
customContext?: (context: ExpressContext) => any;
connection?: Connection;
connection?: PolarisConnection;
supportedRealities?: RealitiesHolder;
}
4 changes: 2 additions & 2 deletions src/config/polaris-server-options.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { RealitiesHolder } from '@enigmatis/polaris-common';
import { PolarisGraphQLLogger } from '@enigmatis/polaris-graphql-logger';
import { ApplicationProperties, LoggerConfiguration } from '@enigmatis/polaris-logs';
import { Connection } from '@enigmatis/polaris-typeorm';
import { PolarisConnection } from '@enigmatis/polaris-typeorm';
import { ApolloServerExpressConfig } from 'apollo-server-express';
import { DocumentNode } from 'graphql';
import { IResolvers } from 'graphql-tools';
Expand All @@ -17,6 +17,6 @@ export interface PolarisServerOptions extends ApolloServerExpressConfig {
allowSubscription?: boolean;
customMiddlewares?: any[];
customContext?: (context: ExpressContext) => any;
connection?: Connection;
connection?: PolarisConnection;
supportedRealities?: RealitiesHolder;
}
4 changes: 2 additions & 2 deletions src/middlewares/middlewares-map.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ import {
RealitiesMiddleware,
SoftDeleteMiddleware,
} from '@enigmatis/polaris-middlewares';
import { Connection } from '@enigmatis/polaris-typeorm';
import { PolarisConnection } from '@enigmatis/polaris-typeorm';

export const getMiddlewaresMap = (
logger: PolarisGraphQLLogger,
realitiesHolder: RealitiesHolder,
connection?: Connection,
connection?: PolarisConnection,
): Map<string, any[]> => {
const softDeleteMiddleware = new SoftDeleteMiddleware(logger).getMiddleware();
const realitiesMiddleware = new RealitiesMiddleware(logger, realitiesHolder).getMiddleware();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"port": 8082,
"port": 8080,
"id": "p0laris-s33d",
"name": "polaris-seed",
"version": "v1",
Expand Down
19 changes: 13 additions & 6 deletions test/integration-tests/test-server/dal/author.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
import { Column, CommonModel, Entity, OneToMany } from '@enigmatis/polaris-typeorm';
import {
Column,
CommonModel,
Entity,
OneToMany,
PrimaryGeneratedColumn,
} from '@enigmatis/polaris-typeorm';
import { Book } from './book';

@Entity()
Expand All @@ -14,16 +20,17 @@ export class Author extends CommonModel {
book => book.author,
)
public books: Book[] | undefined;

@PrimaryGeneratedColumn()
protected id!: string;

constructor(firstName: string, lastName: string) {
super();
this.firstName = firstName;
this.lastName = lastName;
}
public getBooks(): Book[] | undefined {
return this.books;
}

public setBooks(value: Book[]) {
this.books = value;
public getId(): string {
return this.id;
}
}
15 changes: 14 additions & 1 deletion test/integration-tests/test-server/dal/book.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
import { Column, CommonModel, Entity, ManyToOne } from '@enigmatis/polaris-typeorm';
import {
Column,
CommonModel,
Entity,
ManyToOne,
PrimaryGeneratedColumn,
} from '@enigmatis/polaris-typeorm';
import { Author } from './author';

@Entity()
Expand All @@ -12,9 +18,16 @@ export class Book extends CommonModel {
)
public author: Author;

@PrimaryGeneratedColumn('uuid')
protected id!: string;

constructor(title: string, author: Author) {
super();
this.title = title;
this.author = author;
}

public getId(): string {
return this.id;
}
}
18 changes: 9 additions & 9 deletions test/integration-tests/test-server/data-initalizer.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { getConnectionManager, PolarisSaveOptions } from '@enigmatis/polaris-typeorm';
import { getPolarisConnectionManager } from '@enigmatis/polaris-typeorm';
import { Author } from './dal/author';
import { Book } from './dal/book';

export async function deleteTables() {
const connection = getConnectionManager().get();
const connection = getPolarisConnectionManager().get();
const tables = ['book', 'author', 'dataVersion'];
for (const table of tables) {
if (connection) {
Expand All @@ -27,26 +27,26 @@ function getBooks(authors: Author[]): Book[] {
}

async function createExampleData(authors: Author[], books: Book[]) {
const connection = getConnectionManager().get();
const connection = getPolarisConnectionManager().get();
const authorRepo = connection.getRepository(Author);
const bookRepo = connection.getRepository(Book);
const context = {
requestHeaders: { realityId: 0 },
returnedExtensions: {},
} as any;
await authorRepo.save(new PolarisSaveOptions(authors, context) as any);
await bookRepo.save(new PolarisSaveOptions([books[0], books[1]], context) as any);
await authorRepo.save(context, authors);
await bookRepo.save(context, [books[0], books[1]]);
context.requestHeaders.realityId = 3;
delete context.returnedExtensions.globalDataVersion;
await bookRepo.save(new PolarisSaveOptions(books[2], context) as any);
await bookRepo.save(context, books[2]);
delete context.returnedExtensions.globalDataVersion;
await bookRepo.save(new PolarisSaveOptions(books[3], context) as any);
await bookRepo.save(context, books[3]);
books[4].setDeleted(true);
await bookRepo.save(new PolarisSaveOptions(books[4], context) as any);
await bookRepo.save(context, books[4]);
}

export async function initializeDatabase() {
const connection = getConnectionManager().get();
const connection = getPolarisConnectionManager().get();
await deleteTables();
await connection.synchronize();
const authors: Author[] = getAuthors();
Expand Down
4 changes: 2 additions & 2 deletions test/integration-tests/test-server/main.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getConnectionManager } from '@enigmatis/polaris-typeorm';
import { getPolarisConnectionManager } from '@enigmatis/polaris-typeorm';
import { PolarisServer } from '../../../src';
import { initConnection } from './connection-manager';
import { initializeDatabase } from './data-initalizer';
Expand All @@ -17,7 +17,7 @@ const startApp = async () => {
resolvers,
port: polarisProperties.port,
logger: polarisGraphQLLogger,
connection: getConnectionManager().get(),
connection: getPolarisConnectionManager().get(),
});
await server.start();
};
Expand Down
2 changes: 1 addition & 1 deletion test/integration-tests/test-server/polaris-properties.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"port": 8082,
"port": 8080,
"id": "p0laris-ex5mpl3",
"name": "polaris-example",
"version": "v1",
Expand Down
74 changes: 25 additions & 49 deletions test/integration-tests/test-server/schema/resolvers.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,5 @@
import { PolarisGraphQLContext } from '@enigmatis/polaris-common';
import {
DeleteResult,
getConnectionManager,
Like,
PolarisCriteria,
PolarisFindManyOptions,
PolarisFindOneOptions,
PolarisSaveOptions,
} from '../../../../src/index';
import { DeleteResult, getPolarisConnectionManager, Like } from '../../../../src/index';
import { Author } from '../dal/author';
import { Book } from '../dal/book';
import { polarisGraphQLLogger } from '../logger';
Expand All @@ -19,48 +11,36 @@ export const resolvers = {
args: any,
context: PolarisGraphQLContext,
): Promise<Book[]> => {
const connection = getConnectionManager().get();
const connection = getPolarisConnectionManager().get();
polarisGraphQLLogger.debug("I'm the resolver of all books", context);
return connection
.getRepository(Book)
.find(new PolarisFindManyOptions({ relations: ['author'] }, context) as any);
return connection.getRepository(Book).find(context, { relations: ['author'] });
},
bookByTitle: (parent: any, args: any, context: PolarisGraphQLContext): Promise<Book[]> => {
const connection = getConnectionManager().get();
return connection.getRepository(Book).find(
new PolarisFindManyOptions(
{
where: { title: Like(`%${args.title}%`) },
relations: ['author'],
},
context,
) as any,
);
const connection = getPolarisConnectionManager().get();
return connection.getRepository(Book).find(context, {
where: { title: Like(`%${args.title}%`) },
relations: ['author'],
});
},
authorsByName: async (
parent: any,
args: any,
context: PolarisGraphQLContext,
): Promise<Author[]> => {
const connection = getConnectionManager().get();
return connection.getRepository(Author).find(
new PolarisFindManyOptions(
{
where: { firstName: Like(`%${args.name}%`) },
},
context,
) as any,
);
const connection = getPolarisConnectionManager().get();
return connection
.getRepository(Author)
.find(context, { where: { firstName: Like(`%${args.name}%`) } });
},
authorById: async (
parent: any,
args: any,
context: PolarisGraphQLContext,
): Promise<Author | undefined> => {
const connection = getConnectionManager().get();
const connection = getPolarisConnectionManager().get();
return connection
.getRepository(Author)
.findOne(new PolarisFindOneOptions({ where: { id: args.id } }, context) as any, {});
.findOne(context, { where: { id: args.id } }, {});
},
},
Mutation: {
Expand All @@ -69,25 +49,25 @@ export const resolvers = {
args: any,
context: PolarisGraphQLContext,
): Promise<Author> => {
const connection = getConnectionManager().get();
const connection = getPolarisConnectionManager().get();
const authorRepo = connection.getRepository(Author);
const newAuthor = new Author(args.firstName, args.lastName);
await authorRepo.save(new PolarisSaveOptions(newAuthor, context) as any);
await authorRepo.save(context, newAuthor);
return newAuthor;
},
updateBook: async (
parent: any,
args: any,
context: PolarisGraphQLContext,
): Promise<Book | undefined> => {
const connection = getConnectionManager().get();
const connection = getPolarisConnectionManager().get();
const bookRepo = connection.getRepository(Book);
const result = await bookRepo.find({ where: { title: Like(`%${args.title}%`) } });
const result = await bookRepo.find(context, {
where: { title: Like(`%${args.title}%`) },
});
const bookToUpdate = result.length > 0 ? result[0] : undefined;
if (bookToUpdate) {
await bookRepo.update(new PolarisFindOneOptions(bookToUpdate, context) as any, {
title: args.newTitle,
});
await bookRepo.update(context, { title: args.newTitle }, bookToUpdate);
}
return bookToUpdate;
},
Expand All @@ -96,11 +76,9 @@ export const resolvers = {
args: any,
context: PolarisGraphQLContext,
): Promise<boolean> => {
const connection = getConnectionManager().get();
const connection = getPolarisConnectionManager().get();
const bookRepo = connection.getRepository(Book);
const result: DeleteResult = await bookRepo.delete(
new PolarisCriteria(args.id, context) as any,
);
const result: DeleteResult = await bookRepo.delete(context, args.id);
return (
result &&
result.affected !== null &&
Expand All @@ -113,11 +91,9 @@ export const resolvers = {
args: any,
context: PolarisGraphQLContext,
): Promise<boolean> => {
const connection = getConnectionManager().get();
const connection = getPolarisConnectionManager().get();
const authorRepos = connection.getRepository(Author);
await authorRepos.delete(
new PolarisCriteria({ where: { id: args.id } }, context) as any,
);
await authorRepos.delete(context, args.id);
return true;
},
},
Expand Down
12 changes: 7 additions & 5 deletions test/integration-tests/test-server/test-server.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { RealitiesHolder } from '@enigmatis/polaris-common';
import { ConnectionOptions, getConnectionManager } from '@enigmatis/polaris-typeorm';
import { ConnectionOptions, getPolarisConnectionManager } from '@enigmatis/polaris-typeorm';
import { PolarisServer } from '../../../src';
import { initConnection } from './connection-manager';
import { loggerConfig } from './logger';
Expand All @@ -26,15 +26,17 @@ export async function startTestServer(): Promise<PolarisServer> {
supportedRealities: new RealitiesHolder(
new Map([[3, { id: 3, type: 'notreal3', name: 'default' }]]),
),
connection: getConnectionManager().get(),
connection: getPolarisConnectionManager().get(),
});
await server.start();
return server;
}

export async function stopTestServer(server: PolarisServer) {
await server.stop();
await getConnectionManager()
.get()
.close();
if (getPolarisConnectionManager().connections.length > 0) {
await getPolarisConnectionManager()
.get()
.close();
}
}
3 changes: 2 additions & 1 deletion tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
"allowSyntheticDefaultImports": true,
"types": ["jest", "ip", "uuid"],
"declaration": true,
"lib": ["es6", "es2017", "esnext", "dom"]
"lib": ["es6", "es2017", "esnext", "dom"],
"skipLibCheck": true
},
"exclude": ["node_modules", "dist"]
}

0 comments on commit 726f4f8

Please sign in to comment.