Skip to content

Commit

Permalink
Merge pull request #3 from social-native/fix/build
Browse files Browse the repository at this point in the history
Fix/build
  • Loading branch information
erhathaway authored Oct 29, 2019
2 parents 6359e65 + 99e9830 commit c3150d3
Show file tree
Hide file tree
Showing 35 changed files with 1,208 additions and 1,117 deletions.
18 changes: 15 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,24 @@

## Install

Install by referencing the github location and the release number:

```
npm install --save social-native/snpkg-snapi-graphql-node-version#v1.0.0
npm install --save @social-native/snpkg-snapi-graphql-node-version
```

## Migrations

This package installs knex migrations into the dependent service. A binary is published that you can call to add the migrations. For example, you can add this to your npm scripts:

```typescript
scripts: {
"add-version-migrations": "ts-node --project tsconfig.json node_modules/.bin/snpkg-snapi-graphql-node-version --knexfile src/knexfile.ts",
...
"post-install": "npm run add-version-migrations"
},
```

# ------- OLD -------

# RFC:

The core idea:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@

/**********************************************
*
* DO NOT EDIT THIS FILE
*
* Generated from graphql_node_version
*
******************************************** */


exports.up = async function(knex) {
await knex.schema.createTable('version_event_implementor_type', t => {
t.increments('id')
.unsigned()
.primary();
t.string('type').notNullable();
});

await knex.table('version_event_implementor_type').insert([
{
type: 'NODE_CHANGE',
id: '1'
},
{
type: 'NODE_FRAGMENT_CHANGE',
id: '2'
},
{
type: 'LINK_CHANGE',
id: '3'
}
]);

await knex.schema.createTable('version_event', t => {
t.increments('id')
.unsigned()
.primary();
t.integer('implementor_type_id')
.unsigned()
.notNullable()
.references('id')
.inTable('version_event_implementor_type');
t.timestamp('created_at').notNullable();
t.string('user_id').notNullable();
t.string('node_name').notNullable();
t.string('node_id').notNullable();
t.string('resolver_operation').notNullable();
});

await knex.schema.createTable('version_event_link_change', t => {
t.increments('id')
.unsigned()
.primary();
t.integer('event_id')
.unsigned()
.notNullable()
.references('id')
.inTable('version_event');
t.string('node_name').notNullable();
t.string('node_id').notNullable();
});

await knex.schema.createTable('version_event_node_change', t => {
t.increments('id')
.unsigned()
.primary();
t.integer('event_id')
.unsigned()
.notNullable()
.references('id')
.inTable('version_event');
t.json('revision_data').notNullable();
t.string('schema_version').notNullable();
});

await knex.schema.createTable('version_event_node_fragment_register', t => {
t.increments('id')
.unsigned()
.primary();
t.string('parent_node_id').notNullable();
t.string('parent_node_name').notNullable();
t.string('child_node_id').notNullable();
t.string('child_node_name').notNullable();
});

await knex.schema.createTable('version_node_snapshot', t => {
t.increments('id')
.unsigned()
.primary();

t.integer('event_id')
.unsigned()
.notNullable()
.references('id')
.inTable('version_event');

t.json('snapshot').notNullable();
t.string('node_schema_version').notNullable();
});

await knex.schema.createTable('version_role', t => {
t.increments('id')
.unsigned()
.primary();
t.string('role')
.notNullable()
.unique();
});

return await knex.schema.createTable('version_user_role', t => {
t.increments('id')
.unsigned()
.primary();
t.integer('event_id')
.unsigned()
.notNullable()
.references('id')
.inTable('version_event');
t.integer('role_id')
.unsigned()
.notNullable()
.references('id')
.inTable('version_role');
});
};

exports.down = async function(knex) {
await knex.schema.dropTable('version_user_role');
await knex.schema.dropTable('version_role');
await knex.schema.dropTable('version_event_node_fragment_register');
await knex.schema.dropTable('version_event_node_change');
await knex.schema.dropTable('version_event_link_change');
await knex.schema.dropTable('version_node_snapshot');
await knex.schema.dropTable('version_event');
return await knex.schema.dropTable('version_event_implementor_type');
};
82 changes: 49 additions & 33 deletions dev/resolvers/mutation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,57 +12,57 @@ const versionRecorder = unconfiguredVersionRecorder({
logOptions: {level: 'debug', prettyPrint: true, base: null}
});

interface ITeamCreationMutationInput {
export interface ITeamCreationMutationInput {
name: string;
}

interface ITeamUpdateMutationInput {
export interface ITeamUpdateMutationInput {
id: number;
name?: string;
}

interface ITeamDeleteMutationInput {
export interface ITeamDeleteMutationInput {
id: number;
}

interface ITeamUserCreationMutationInput {
export interface ITeamUserCreationMutationInput {
userId: number;
teamId: number;
}

interface ITeamUserDeleteMutationInput {
export interface ITeamUserDeleteMutationInput {
userId: number;
teamId: number;
}

interface ITodoListCreationMutationInput {
export interface ITodoListCreationMutationInput {
userId: number;
usage: string;
}
interface ITodoListUpdateMutationInput {
export interface ITodoListUpdateMutationInput {
id: number;
usage: string;
}
interface ITodoListDeleteMutationInput {
export interface ITodoListDeleteMutationInput {
id: number;
}
interface ITodoItemCreationMutationInput {
export interface ITodoItemCreationMutationInput {
todoListId: number;
note: string;
order: number;
}

interface ITodoItemUpdateMutationInput {
export interface ITodoItemUpdateMutationInput {
id: number;
note: string;
order: number;
}

interface ITodoItemDeleteMutationInput {
export interface ITodoItemDeleteMutationInput {
id: number;
}

interface IUserCreationMutationInput {
export interface IUserCreationMutationInput {
username: string;
firstname: string;
lastname?: string;
Expand All @@ -71,7 +71,7 @@ interface IUserCreationMutationInput {
bio?: string;
}

interface IUserUpdateMutationInput {
export interface IUserUpdateMutationInput {
id: string;
username?: string;
firstname?: string;
Expand All @@ -81,64 +81,80 @@ interface IUserUpdateMutationInput {
bio?: string;
}

interface IUserDeleteMutationInput {
export interface IUserDeleteMutationInput {
id: string;
}

type MutationTeamCreate = Resolver<{id: number | undefined}, undefined, ITeamCreationMutationInput>;
type MutationTeamCreate = Resolver<
Promise<{id: number | undefined}>,
undefined,
ITeamCreationMutationInput
>;

type MutationTeamUpdate = Resolver<{id: number | undefined}, undefined, ITeamUpdateMutationInput>;
type MutationTeamUpdate = Resolver<
Promise<{id: number | undefined}>,
undefined,
ITeamUpdateMutationInput
>;

type MutationTeamDelete = Resolver<{id: number | undefined}, undefined, ITeamDeleteMutationInput>;
type MutationTeamDelete = Resolver<
Promise<{id: number | undefined}>,
undefined,
ITeamDeleteMutationInput
>;

type MutationTeamUserCreate = Resolver<
{id: number | undefined},
Promise<{id: number | undefined}>,
undefined,
ITeamUserCreationMutationInput
>;

type MutationTeamUserDelete = Resolver<
{id: number | undefined},
Promise<{id: number | undefined}>,
undefined,
ITeamUserDeleteMutationInput
>;

type MutationTodoListCreate = Resolver<
{id: number | undefined},
Promise<{id: number | undefined}>,
undefined,
ITodoListCreationMutationInput
>;
type MutationTodoListUpdate = Resolver<
{id: number | undefined},
Promise<{id: number | undefined}>,
undefined,
ITodoListUpdateMutationInput
>;
type MutationTodoListDelete = Resolver<
{id: number | undefined},
Promise<{id: number | undefined}>,
undefined,
ITodoListDeleteMutationInput
>;
type MutationTodoItemCreate = Resolver<
{id: number | undefined},
Promise<{id: number | undefined}>,
undefined,
ITodoItemCreationMutationInput
>;
type MutationTodoItemUpdate = Resolver<
{id: number | undefined},
Promise<{id: number | undefined}>,
undefined,
ITodoItemUpdateMutationInput
>;
type MutationTodoItemDelete = Resolver<
{id: number | undefined},
Promise<{id: number | undefined}>,
undefined,
ITodoItemDeleteMutationInput
>;

type MutationUserCreateResolver = Resolver<IUserNode, undefined, IUserCreationMutationInput>;
type MutationUserUpdateResolver = Resolver<IUserNode, undefined, IUserUpdateMutationInput>;
type MutationUserCreateResolver = Resolver<
Promise<IUserNode>,
undefined,
IUserCreationMutationInput
>;
type MutationUserUpdateResolver = Resolver<Promise<IUserNode>, undefined, IUserUpdateMutationInput>;

type MutationUserDeleteResolver = Resolver<
{id: number | undefined},
Promise<{id: number | undefined}>,
undefined,
IUserDeleteMutationInput
>;
Expand Down Expand Up @@ -367,7 +383,7 @@ const commonDecoratorConfig = <T extends Resolver<any, any, any>>() =>
knex: (_, __, {sqlClient}) => sqlClient,
userId: () => '1',
userRoles: () => ['ethan', 'human'],
revisionData: (_, args) => JSON.stringify(args),
revisionData: (_, args) => args,
currentNodeSnapshotFrequency: 5
} as Pick<
IVersionRecorderExtractors<T>,
Expand Down Expand Up @@ -488,7 +504,7 @@ decorate(mutation, {
);
return connectionResult.edges[0].node;
},
edges: (_, {teamId}) => [{nodeId: teamId, nodeName: 'team'}]
edges: (_node, _parent, {teamId}) => [{nodeId: teamId, nodeName: 'team'}]
}),
teamUserDelete: versionRecorder<MutationTeamUserDelete>({
...commonDecoratorConfig<MutationTeamUserDelete>(),
Expand All @@ -505,7 +521,7 @@ decorate(mutation, {
);
return connectionResult.edges[0].node;
},
edges: (_, {teamId}) => [{nodeId: teamId, nodeName: 'team'}]
edges: (_node, _parent, {teamId}) => [{nodeId: teamId, nodeName: 'team'}]
}),
todoListCreate: versionRecorder<MutationTodoListCreate>({
...commonDecoratorConfig<MutationTodoListCreate>(),
Expand All @@ -522,7 +538,7 @@ decorate(mutation, {
);
return connectionResult.edges[0].node;
},
edges: (_, {userId}) => [{nodeId: userId, nodeName: 'user'}]
edges: (_node, _parent, {userId}) => [{nodeId: userId, nodeName: 'user'}]
}),
todoListUpdate: versionRecorder<MutationTodoListUpdate>({
...commonDecoratorConfig<MutationTodoListUpdate>(),
Expand Down Expand Up @@ -571,7 +587,7 @@ decorate(mutation, {
);
return connectionResult.edges[0].node;
},
parentNode: (_, {todoListId}) => ({nodeName: 'todoList', nodeId: todoListId})
parentNode: (_, __, {todoListId}) => ({nodeName: 'todoList', nodeId: todoListId})
}),
todoItemUpdate: versionRecorder<MutationTodoItemUpdate>({
...commonDecoratorConfig<MutationTodoItemUpdate>(),
Expand Down
Loading

0 comments on commit c3150d3

Please sign in to comment.