Skip to content

Instantly share code, notes, and snippets.

@seandearnaley
seandearnaley / category.model.ts
Created June 8, 2020 15:59
category.model.ts (for Warthog)
import { BaseModel, Model, StringField, ManyToMany } from 'warthog';
import { JoinTable, TreeChildren, TreeParent, Tree } from 'typeorm';
import { Card } from '../card/card.model';
@Model()
@Tree("closure-table")
export class Category extends BaseModel {
@StringField({ nullable: true })
name?: string;
@seandearnaley
seandearnaley / card.model.ts
Created June 8, 2020 15:58
card.model.ts (for Warthog)
import { BaseModel, IntField, Model, StringField, ManyToMany } from 'warthog';
import { Category } from '../category/category.model';
@Model()
export class Card extends BaseModel {
@IntField({ nullable: true })
number?: number;
@StringField({ nullable: true })
label?: string;
@seandearnaley
seandearnaley / Category.ts
Created June 8, 2020 15:56
BrainStrike Category Entity / Model
import {
Entity,
Tree,
Column,
PrimaryGeneratedColumn,
TreeChildren,
TreeParent,
ManyToMany,
JoinTable,
} from "typeorm";
@seandearnaley
seandearnaley / Card.ts
Created June 8, 2020 15:55
BrainStrike Card Entity / Model
import { Entity, PrimaryGeneratedColumn, Column, ManyToMany } from "typeorm";
import { Category } from "./Category";
@Entity()
export class Card {
@PrimaryGeneratedColumn("uuid")
id: string;
@Column()
number: number;
@seandearnaley
seandearnaley / docker-compose.yml
Created June 8, 2020 15:54
Warthog docker-compose.yml for Postgresql
version: '3.6'
services:
postgres:
image: postgres
restart: always
volumes:
- ./db_data:/var/lib/postgresql/data
ports:
- 5432:5432
environment:
@seandearnaley
seandearnaley / removeCardSnip.ts
Created March 5, 2020 02:23
Remove Card Snippet for Connection
cache.modify(`Category:${categoryId}`, {
cards(cards: Reference, { readField }) {
const edges = readField<CardEdgeWithReference[]>('edges', cards).filter(
edge => edge.node.__ref !== `Card:${cardId}`,
);
let { totalCount } = readField<PageInfo>('pageInfo', cards);
const pageInfo = buildPageInfo<Edge<Card>>(edges, --totalCount, 'Card'); // rebuild pageinfo
return {
@seandearnaley
seandearnaley / useRemoveCategory.ts
Last active February 22, 2020 18:39
useRemoveCategory.ts old
const removeCategory = (id: string) =>
removeCategoryMutation({
variables: {
id
},
update: (cache, { data }) => {
const { categories } =
cache.readQuery({
query: GetCategoriesDocument,
}) || {};
@seandearnaley
seandearnaley / typePolicy.ts
Last active March 5, 2020 02:17
Type & Field Policy API example
export const cache = new InMemoryCache({
...possibleTypes,
typePolicies: {
Query: {
fields: {
card(existingData, { args, toReference }) {
return (
existingData || toReference({ __typename: 'Card', id: args?.id })
);
},
@seandearnaley
seandearnaley / cachemodify_example.ts
Last active February 21, 2020 07:10
Cache Modify Example
update: cache => {
cache.modify('ROOT_QUERY', {
categories(categories: Reference[], { readField }) {
return categories.filter(
category => id !== readField('id', category),
);
},
});
// evict this item from the in memory cache
@seandearnaley
seandearnaley / Card.graphql
Last active February 21, 2020 11:08
Card.graphql Connection Types (Server)
interface Node {
id: ID!
created: DateTime!
updated: DateTime
}
type Card implements Node {
id: ID!
number: Int
label: String