Skip to content

Commit

Permalink
feat(base-model): update so that methods work if standard fields (cre…
Browse files Browse the repository at this point in the history
…atedAt, deletedAt, etc...) don't exist (#407)

* feat(base-model): update so that we don't require warthog decorators

* feat(decorators): adds a bunch of new decorators
  • Loading branch information
goldcaddy77 authored Sep 6, 2020
1 parent 51f75f6 commit b7f2c5b
Show file tree
Hide file tree
Showing 67 changed files with 5,406 additions and 651 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<!-- https://keepachangelog.com/en/1.0.0/ -->

## Unpublished

- Removed `BaseResolver`
- BaseService methods should no longer take a template type `<W extends WhereInput>`
10 changes: 2 additions & 8 deletions examples/06-base-service/src/user.resolver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,7 @@ import { Repository } from 'typeorm';
import { InjectRepository } from 'typeorm-typedi-extensions';

import { BaseContext, BaseService, StandardDeleteResponse } from '../../../src';
import {
UserCreateInput,
UserUpdateArgs,
UserWhereArgs,
UserWhereInput,
UserWhereUniqueInput
} from '../generated';
import { UserCreateInput, UserUpdateArgs, UserWhereArgs, UserWhereUniqueInput } from '../generated';

import { User } from './user.model';
import { UserService } from './user.service';
Expand All @@ -36,7 +30,7 @@ export class UserResolver {

@Query(() => [User])
async users(@Args() { where, orderBy, limit, offset }: UserWhereArgs): Promise<User[]> {
return this.injectedService.find<UserWhereInput>(where, orderBy, limit, offset);
return this.injectedService.find(where, orderBy, limit, offset);
}

@Query(() => User)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import {
EnvironmentCreateInput,
EnvironmentUpdateArgs,
EnvironmentWhereArgs,
EnvironmentWhereInput,
EnvironmentWhereUniqueInput
} from '../../generated';

Expand Down Expand Up @@ -59,7 +58,7 @@ export class EnvironmentResolver {
async environments(
@Args() { where, orderBy, limit, offset }: EnvironmentWhereArgs
): Promise<Environment[]> {
return this.service.find<EnvironmentWhereInput>(where, orderBy, limit, offset);
return this.service.find(where, orderBy, limit, offset);
}

@Query(() => Environment)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import {
FeatureFlagSegmentCreateInput,
FeatureFlagSegmentUpdateArgs,
FeatureFlagSegmentWhereArgs,
FeatureFlagSegmentWhereInput,
FeatureFlagSegmentWhereUniqueInput
} from '../../generated';

Expand All @@ -24,7 +23,7 @@ export class FeatureFlagSegmentResolver {
@Args()
{ where, orderBy, limit, offset }: FeatureFlagSegmentWhereArgs
): Promise<FeatureFlagSegment[]> {
return this.service.find<FeatureFlagSegmentWhereInput>(where, orderBy, limit, offset);
return this.service.find(where, orderBy, limit, offset);
}

@Query(() => FeatureFlagSegment)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import {
FeatureFlagUserCreateInput,
FeatureFlagUserUpdateArgs,
FeatureFlagUserWhereArgs,
FeatureFlagUserWhereInput,
FeatureFlagUserWhereUniqueInput
} from '../../generated';

Expand All @@ -31,7 +30,7 @@ export class FeatureFlagUserResolver {
@Args()
{ where, orderBy, limit, offset }: FeatureFlagUserWhereArgs
): Promise<FeatureFlagUser[]> {
return this.service.find<FeatureFlagUserWhereInput>(where, orderBy, limit, offset);
return this.service.find(where, orderBy, limit, offset);
}

@Query(() => FeatureFlagUser)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ import {
FeatureFlagCreateInput,
FeatureFlagUpdateArgs,
FeatureFlagWhereArgs,
FeatureFlagWhereInput,
FeatureFlagWhereUniqueInput
} from '../../generated';

Expand Down Expand Up @@ -69,7 +68,7 @@ export class FeatureFlagResolver {
async featureFlags(
@Args() { where, orderBy, limit, offset }: FeatureFlagWhereArgs
): Promise<FeatureFlag[]> {
return this.service.find<FeatureFlagWhereInput>(where, orderBy, limit, offset);
return this.service.find(where, orderBy, limit, offset);
}

// Custom resolver that has it's own InputType and calls into custom service method
Expand Down
3 changes: 1 addition & 2 deletions examples/07-feature-flags/src/project/project.resolver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import {
ProjectCreateInput,
ProjectUpdateArgs,
ProjectWhereArgs,
ProjectWhereInput,
ProjectWhereUniqueInput
} from '../../generated';

Expand Down Expand Up @@ -62,7 +61,7 @@ export class ProjectResolver {

@Query(() => [Project])
async projects(@Args() { where, orderBy, limit, offset }: ProjectWhereArgs): Promise<Project[]> {
return this.service.find<ProjectWhereInput>(where, orderBy, limit, offset);
return this.service.find(where, orderBy, limit, offset);
}

@Query(() => Project)
Expand Down
3 changes: 1 addition & 2 deletions examples/07-feature-flags/src/segment/segment.resolver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import {
SegmentCreateInput,
SegmentUpdateArgs,
SegmentWhereArgs,
SegmentWhereInput,
SegmentWhereUniqueInput
} from '../../generated';

Expand Down Expand Up @@ -49,7 +48,7 @@ export class SegmentResolver {

@Query(() => [Segment])
async segments(@Args() { where, orderBy, limit, offset }: SegmentWhereArgs): Promise<Segment[]> {
return this.service.find<SegmentWhereInput>(where, orderBy, limit, offset);
return this.service.find(where, orderBy, limit, offset);
}

@Query(() => Segment)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import {
UserSegmentCreateInput,
UserSegmentUpdateArgs,
UserSegmentWhereArgs,
UserSegmentWhereInput,
UserSegmentWhereUniqueInput
} from '../../generated';

Expand All @@ -23,7 +22,7 @@ export class UserSegmentResolver {
async userSegments(
@Args() { where, orderBy, limit, offset }: UserSegmentWhereArgs
): Promise<UserSegment[]> {
return this.service.find<UserSegmentWhereInput>(where, orderBy, limit, offset);
return this.service.find(where, orderBy, limit, offset);
}

@Query(() => UserSegment)
Expand Down
3 changes: 1 addition & 2 deletions examples/08-performance/src/modules/post/post.resolver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import {
PostCreateManyArgs,
PostUpdateArgs,
PostWhereArgs,
PostWhereInput,
PostWhereUniqueInput
} from '../../../generated';

Expand All @@ -30,7 +29,7 @@ export class PostResolver {
@Args() { where, orderBy, limit, offset }: PostWhereArgs,
@Fields() fields: string[]
): Promise<Post[]> {
return this.service.find<PostWhereInput>(where, orderBy, limit, offset, fields);
return this.service.find(where, orderBy, limit, offset, fields);
}

@Query(() => Post)
Expand Down
3 changes: 1 addition & 2 deletions examples/08-performance/src/modules/user/user.resolver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import {
UserCreateInput,
UserUpdateArgs,
UserWhereArgs,
UserWhereInput,
UserWhereUniqueInput
} from '../../../generated';

Expand All @@ -26,7 +25,7 @@ export class UserResolver {

@Query(() => [User])
async users(@Args() { where, orderBy, limit, offset }: UserWhereArgs): Promise<User[]> {
return this.service.find<UserWhereInput>(where, orderBy, limit, offset);
return this.service.find(where, orderBy, limit, offset);
}

@Query(() => User)
Expand Down
3 changes: 1 addition & 2 deletions examples/09-production/src/modules/post/post.resolver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import {
PostCreateManyArgs,
PostUpdateArgs,
PostWhereArgs,
PostWhereInput,
PostWhereUniqueInput
} from '../../../generated';

Expand All @@ -30,7 +29,7 @@ export class PostResolver {
@Args() { where, orderBy, limit, offset }: PostWhereArgs,
@Fields() fields: string[]
): Promise<Post[]> {
return this.service.find<PostWhereInput>(where, orderBy, limit, offset, fields);
return this.service.find(where, orderBy, limit, offset, fields);
}

@Query(() => Post)
Expand Down
3 changes: 1 addition & 2 deletions examples/09-production/src/modules/user/user.resolver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import {
UserCreateInput,
UserUpdateArgs,
UserWhereArgs,
UserWhereInput,
UserWhereUniqueInput
} from '../../../generated';

Expand All @@ -26,7 +25,7 @@ export class UserResolver {

@Query(() => [User])
async users(@Args() { where, orderBy, limit, offset }: UserWhereArgs): Promise<User[]> {
return this.service.find<UserWhereInput>(where, orderBy, limit, offset);
return this.service.find(where, orderBy, limit, offset);
}

@Query(() => User)
Expand Down
12 changes: 2 additions & 10 deletions examples/10-subscriptions/src/user.resolver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@ import {
Arg,
Args,
Ctx,
// Field,
Mutation,
// ObjectType,
PubSub,
Query,
Resolver,
Expand All @@ -17,13 +15,7 @@ import {
import { Inject } from 'typedi';

import { BaseContext, StandardDeleteResponse } from '../../../src';
import {
UserCreateInput,
UserUpdateArgs,
UserWhereArgs,
UserWhereInput,
UserWhereUniqueInput
} from '../generated';
import { UserCreateInput, UserUpdateArgs, UserWhereArgs, UserWhereUniqueInput } from '../generated';

import { User } from './user.model';
import { UserService } from './user.service';
Expand All @@ -43,7 +35,7 @@ export class UserResolver {

@Query(() => [User])
async users(@Args() { where, orderBy, limit, offset }: UserWhereArgs): Promise<User[]> {
return this.service.find<UserWhereInput>(where, orderBy, limit, offset);
return this.service.find(where, orderBy, limit, offset);
}

@Query(() => User)
Expand Down
4 changes: 2 additions & 2 deletions examples/11-transactions/src/user.resolver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { Inject } from 'typedi';

import { BaseContext } from '../../../src';

import { UserCreateInput, UserWhereArgs, UserWhereInput } from '../generated';
import { UserCreateInput, UserWhereArgs } from '../generated';

import { User } from './user.model';
import { UserService } from './user.service';
Expand All @@ -14,7 +14,7 @@ export class UserResolver {

@Query(() => [User])
async users(@Args() { where, orderBy, limit, offset }: UserWhereArgs): Promise<User[]> {
return this.service.find<UserWhereInput>(where, orderBy, limit, offset);
return this.service.find(where, orderBy, limit, offset);
}

// If this was User instead of [User] you get "Cannot return null for non-nullable field User.id"
Expand Down
9 changes: 9 additions & 0 deletions examples/14-base-service-v2/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
NODE_ENV=development
PGUSER=postgres
WARTHOG_APP_HOST=localhost
WARTHOG_APP_PORT=4100
WARTHOG_DB_DATABASE=warthog-14-base-service-v2
WARTHOG_DB_USERNAME=postgres
WARTHOG_DB_PASSWORD=
WARTHOG_DB_SYNCHRONIZE=true
WARTHOG_SUBSCRIPTIONS=true
20 changes: 20 additions & 0 deletions examples/14-base-service-v2/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
## Example 11

## Setup

Run `yarn bootstrap && yarn start`

## Bootstrapping the App

Running `DEBUG=* yarn bootstrap` will do the following:

- Install packages
- Create the example DB
- Seed the database with test data

## Running the App

To run the project, run `yarn start`. This will:

- Run the API server
- Open GraphQL Playground
Loading

0 comments on commit b7f2c5b

Please sign in to comment.