diff --git a/backend-assemblyscript/step-2-json-encoding/assembly/response.ts b/backend-assemblyscript/step-2-json-encoding/assembly/response.ts index 0b07521..4bae8cb 100644 --- a/backend-assemblyscript/step-2-json-encoding/assembly/response.ts +++ b/backend-assemblyscript/step-2-json-encoding/assembly/response.ts @@ -34,17 +34,17 @@ export class UnknownResponse extends Response { } export class PostResponse extends Response { - numberOfTwits: i32; - constructor(numberOfTwits: i32) { + msgCount: i32; + constructor(msgCount: i32) { super(); - this.numberOfTwits = numberOfTwits; + this.msgCount = msgCount; } serialize(): string { let encoder = new JSONEncoder(); encoder.pushObject(null); encoder.setString("action", "Post"); - encoder.setInteger("number_of_twits", this.numberOfTwits); + encoder.setInteger("count", this.msgCount); encoder.popObject(); return encoder.toString(); @@ -52,20 +52,20 @@ export class PostResponse extends Response { } export class FetchResponse extends Response { - messageList: Array; + posts: Array; - constructor(messageList: Array) { + constructor(posts: Array) { super(); - this.messageList = messageList; + this.posts = posts; } serialize(): string { let encoder = new JSONEncoder(); encoder.pushObject(null); encoder.setString("action", "Fetch"); - encoder.pushArray("msg_list"); - for (let i = 0; i < this.messageList.length; i++) { - let message = this.messageList[i]; + encoder.pushArray("posts"); + for (let i = 0; i < this.posts.length; i++) { + let message = this.posts[i]; encoder.pushObject(null); encoder.setString("msg", message); encoder.popObject(); diff --git a/backend-assemblyscript/step-3-internal-storage/assembly/main.ts b/backend-assemblyscript/step-3-internal-storage/assembly/main.ts index 7e74b78..9a35470 100644 --- a/backend-assemblyscript/step-3-internal-storage/assembly/main.ts +++ b/backend-assemblyscript/step-3-internal-storage/assembly/main.ts @@ -1,7 +1,7 @@ import {Action, decode, FetchRequest, PostRequest} from "./request"; import {PostResponse, Message, FetchResponse, UnknownResponse} from "./response"; -let messageList: Array = new Array(); +let posts: Array = new Array(); // main handler for an application export function handler(input: string): string { @@ -10,19 +10,19 @@ export function handler(input: string): string { if (request.action == Action.Post) { let post = request as PostRequest; - messageList.push(new Message(post.msg, post.handle)); - let response = new PostResponse(messageList.length); + posts.push(new Message(post.msg, post.handle)); + let response = new PostResponse(posts.length); return response.serialize() } else if (request.action == Action.Fetch) { let fetch = request as FetchRequest; var messages: Array; if (fetch.filter_handle == null) { - messages = messageList + messages = posts } else { let filter_handle = fetch.filter_handle as string; let filtered = new Array(); - for (let i = 0; i < messageList.length; i++) { - let message = messageList[i]; + for (let i = 0; i < posts.length; i++) { + let message = posts[i]; if (message.handle == filter_handle) { filtered.push(message) } diff --git a/backend-assemblyscript/step-3-internal-storage/assembly/response.ts b/backend-assemblyscript/step-3-internal-storage/assembly/response.ts index 2be541b..88236a9 100644 --- a/backend-assemblyscript/step-3-internal-storage/assembly/response.ts +++ b/backend-assemblyscript/step-3-internal-storage/assembly/response.ts @@ -34,17 +34,17 @@ export class UnknownResponse extends Response { } export class PostResponse extends Response { - numberOfTwits: i32; - constructor(numberOfTwits: i32) { + msgCount: i32; + constructor(msgCount: i32) { super(); - this.numberOfTwits = numberOfTwits; + this.msgCount = msgCount; } serialize(): string { let encoder = new JSONEncoder(); encoder.pushObject(null); encoder.setString("action", "Post"); - encoder.setInteger("number_of_twits", this.numberOfTwits); + encoder.setInteger("count", this.msgCount); encoder.popObject(); return encoder.toString(); @@ -52,20 +52,20 @@ export class PostResponse extends Response { } export class FetchResponse extends Response { - messageList: Array; + posts: Array; - constructor(messageList: Array) { + constructor(posts: Array) { super(); - this.messageList = messageList; + this.posts = posts; } serialize(): string { let encoder = new JSONEncoder(); encoder.pushObject(null); encoder.setString("action", "Fetch"); - encoder.pushArray("message_list"); - for (let i = 0; i < this.messageList.length; i++) { - let twit = this.messageList[i]; + encoder.pushArray("posts"); + for (let i = 0; i < this.posts.length; i++) { + let twit = this.posts[i]; encoder.pushObject(null); encoder.setString("msg", twit.msg); encoder.setString("handle", twit.handle); diff --git a/backend-assemblyscript/step-4-sqlite/assembly/database.ts b/backend-assemblyscript/step-4-sqlite/assembly/database.ts index 0e231ad..63d2abe 100644 --- a/backend-assemblyscript/step-4-sqlite/assembly/database.ts +++ b/backend-assemblyscript/step-4-sqlite/assembly/database.ts @@ -1,5 +1,5 @@ import {log} from "../node_modules/assemblyscript-sdk/assembly/logger"; -import {query} from "../node_modules/db-connector/assembly/index" +import {query} from "../node_modules/db-connector/assembly/sqlite" function doRequest(request: string): string { @@ -23,8 +23,18 @@ export function addMessage(msg: string, handle: string): void { doRequest(request); } -export function getMessages(): string { - let request = "SELECT * FROM messages"; - let result = doRequest(request); - return result; +export function getMessages(handle: string | null): string { + if (handle) { + let request = 'SELECT json_group_array(json_object("msg", msg, "handle", handle)) AS json_result FROM (SELECT * FROM messages WHERE handle = "' + handle + '")'; + return doRequest(request); + } else { + let request = "SELECT json_group_array(json_object('msg', msg, 'handle', handle)) AS json_result FROM (SELECT * FROM messages)"; + return doRequest(request); + } +} + +export function getPostsCount(): u32 { + let request = "SELECT COUNT(*) from messages"; + let result = doRequest(request); + return U32.parseInt(result); } diff --git a/backend-assemblyscript/step-4-sqlite/assembly/main.ts b/backend-assemblyscript/step-4-sqlite/assembly/main.ts index d3ef1d7..cd67b92 100644 --- a/backend-assemblyscript/step-4-sqlite/assembly/main.ts +++ b/backend-assemblyscript/step-4-sqlite/assembly/main.ts @@ -1,6 +1,6 @@ import {Action, decode, FetchRequest, PostRequest} from "./request"; import {PostResponse, Message, FetchResponse, UnknownResponse} from "./response"; -import {addMessage, getMessages, initTables} from "./database"; +import {addMessage, getMessages, getPostsCount, initTables} from "./database"; initTables(); @@ -12,29 +12,15 @@ export function handler(input: string): string { if (request.action == Action.Post) { let post = request as PostRequest; addMessage(post.msg, post.handle); - let response = new PostResponse(0); + let count = getPostsCount(); + + let response = new PostResponse(count); return response.serialize() } else if (request.action == Action.Fetch) { let fetch = request as FetchRequest; - let result = getMessages(); + let result = getMessages(fetch.handle); return result; - - /*if (fetch.filter_handle == null) { - messages = messageList - } else { - let filter_handle = fetch.filter_handle as string; - let filtered = new Array(); - for (let i = 0; i < messageList.length; i++) { - let message = messageList[i]; - if (message.handle == filter_handle) { - filtered.push(message) - } - } - messages = filtered; - } - let response = new FetchResponse(messages); - return response.serialize()*/ } let response = new UnknownResponse(); diff --git a/backend-assemblyscript/step-4-sqlite/assembly/request.ts b/backend-assemblyscript/step-4-sqlite/assembly/request.ts index ead3820..ae2b836 100644 --- a/backend-assemblyscript/step-4-sqlite/assembly/request.ts +++ b/backend-assemblyscript/step-4-sqlite/assembly/request.ts @@ -25,12 +25,12 @@ export class PostRequest extends Request { } export class FetchRequest extends Request { - public readonly filter_handle: string | null; + public readonly handle: string | null; - constructor(filter_handle: string | null) { + constructor(handle: string | null) { super(); this.action = Action.Fetch; - this.filter_handle = filter_handle; + this.handle = handle; } } @@ -83,7 +83,6 @@ class RequestJSONEventsHandler extends JSONHandler { this.msg = value; } else if (name == "handle") { this.handle = value; - } else if (name == "filter_handle") { this.filter_handle = value; } // json scheme is not strict, so we won't throw an error on excess fields diff --git a/backend-assemblyscript/step-4-sqlite/assembly/response.ts b/backend-assemblyscript/step-4-sqlite/assembly/response.ts index 2be541b..56cf3c4 100644 --- a/backend-assemblyscript/step-4-sqlite/assembly/response.ts +++ b/backend-assemblyscript/step-4-sqlite/assembly/response.ts @@ -34,17 +34,17 @@ export class UnknownResponse extends Response { } export class PostResponse extends Response { - numberOfTwits: i32; - constructor(numberOfTwits: i32) { + msgCount: u32; + constructor(msgCount: u32) { super(); - this.numberOfTwits = numberOfTwits; + this.msgCount = msgCount; } serialize(): string { let encoder = new JSONEncoder(); encoder.pushObject(null); encoder.setString("action", "Post"); - encoder.setInteger("number_of_twits", this.numberOfTwits); + encoder.setInteger("count", this.msgCount); encoder.popObject(); return encoder.toString(); @@ -52,20 +52,20 @@ export class PostResponse extends Response { } export class FetchResponse extends Response { - messageList: Array; + posts: Array; - constructor(messageList: Array) { + constructor(posts: Array) { super(); - this.messageList = messageList; + this.posts = posts; } serialize(): string { let encoder = new JSONEncoder(); encoder.pushObject(null); encoder.setString("action", "Fetch"); - encoder.pushArray("message_list"); - for (let i = 0; i < this.messageList.length; i++) { - let twit = this.messageList[i]; + encoder.pushArray("posts"); + for (let i = 0; i < this.posts.length; i++) { + let twit = this.posts[i]; encoder.pushObject(null); encoder.setString("msg", twit.msg); encoder.setString("handle", twit.handle);