class TodoItem { // Single source of truth for fetching static async gen(id: number): Promise { const data = await Redis.get("ti:" + id); // Nullable return data ? new TodoItem(data) : null; } }
class TodoItem { // Single source of truth for fetching static async gen(id: number): Promise { const data = await Redis.get("ti:" + id); // Nullable // Single source of truth for authorization return data ? new TodoItem(data) : null; } }
class TodoItem { // Single source of truth for fetching static async gen(id: number): Promise { const data = await Redis.get("ti:" + id); // Nullable if (data === null) return null; const canSee = checkCanSee(data); return canSee ? new TodoItem(data) : null; } } function checkCanSee(data: Object) { // A Todo Item can only be seen by its creator }
class TodoItem { static async gen( viewer: Viewer, id: number): Promise; // No other public constructors } class TodoList { static async gen( viewer: Viewer, id: number): Promise; // No other public constructors }
{ me { name bestFriend { name } friends(first: 5) { name bestFriend { name } } } } GET u:1 GET u:2 LRANGE friends:1 0 5 GET u:3 GET u:4 GET u:5 GET u:6 GET u:7 GET u:8 GET u:9 GET u:10 GET u:11 GET u:12 redis.log
{ me { name bestFriend { name } friends(first: 5) { name bestFriend { name } } } } GET u:1 GET u:2 LRANGE friends:1 0 5 GET u:3 GET u:4 GET u:5 GET u:6 GET u:7 GET u:8 GET u:9 GET u:10 GET u:11 GET u:12 redis.log
{ me { name bestFriend { name } friends(first: 5) { name bestFriend { name } } } } GET u:1 GET u:2 LRANGE friends:1 0 5 GET u:3 GET u:4 GET u:5 GET u:6 GET u:7 GET u:8 GET u:9 GET u:10 GET u:11 GET u:12 redis.log
{ me { name bestFriend { name } friends(first: 5) { name bestFriend { name } } } } GET u:1 GET u:2 LRANGE friends:1 0 5 GET u:3 GET u:4 GET u:5 GET u:6 GET u:7 GET u:8 GET u:9 GET u:10 GET u:11 GET u:12 redis.log
{ me { name bestFriend { name } friends(first: 5) { name bestFriend { name } } } } GET u:1 GET u:2 LRANGE friends:1 0 5 GET u:2 GET u:3 GET u:4 GET u:5 GET u:6 GET u:8 GET u:9 GET u:10 GET u:11 GET u:12 redis.log
{ me { name bestFriend { name } friends(first: 5) { name bestFriend { name } } } } GET u:1 GET u:2 LRANGE friends:1 0 5 GET u:2 GET u:3 GET u:4 GET u:5 GET u:6 GET u:1 GET u:5 GET u:7 GET u:8 GET u:9 redis.log
{ me { name bestFriend { name } friends(first: 5) { name bestFriend { name } } } } GET u:1 GET u:2 LRANGE friends:1 0 -1 GET u:3 GET u:4 GET u:5 GET u:6 GET u:7 GET u:8 GET u:9 GET u:10 GET u:11 GET u:12 redis.log
{ me { name bestFriend { name } friends(first: 5) { name bestFriend { name } } } } GET u:1 GET u:2 LRANGE friends:1 0 5 GET u:3 GET u:4 GET u:5 GET u:6 GET u:7 redis.log