fixes, updates

This commit is contained in:
DieMyst 2019-08-15 12:50:41 +03:00
parent e4a1cf40d2
commit 97de277e07
7 changed files with 59 additions and 64 deletions

View File

@ -34,17 +34,17 @@ export class UnknownResponse extends Response {
} }
export class PostResponse extends Response { export class PostResponse extends Response {
numberOfTwits: i32; msgCount: i32;
constructor(numberOfTwits: i32) { constructor(msgCount: i32) {
super(); super();
this.numberOfTwits = numberOfTwits; this.msgCount = msgCount;
} }
serialize(): string { serialize(): string {
let encoder = new JSONEncoder(); let encoder = new JSONEncoder();
encoder.pushObject(null); encoder.pushObject(null);
encoder.setString("action", "Post"); encoder.setString("action", "Post");
encoder.setInteger("number_of_twits", this.numberOfTwits); encoder.setInteger("count", this.msgCount);
encoder.popObject(); encoder.popObject();
return encoder.toString(); return encoder.toString();
@ -52,20 +52,20 @@ export class PostResponse extends Response {
} }
export class FetchResponse extends Response { export class FetchResponse extends Response {
messageList: Array<string>; posts: Array<string>;
constructor(messageList: Array<string>) { constructor(posts: Array<string>) {
super(); super();
this.messageList = messageList; this.posts = posts;
} }
serialize(): string { serialize(): string {
let encoder = new JSONEncoder(); let encoder = new JSONEncoder();
encoder.pushObject(null); encoder.pushObject(null);
encoder.setString("action", "Fetch"); encoder.setString("action", "Fetch");
encoder.pushArray("msg_list"); encoder.pushArray("posts");
for (let i = 0; i < this.messageList.length; i++) { for (let i = 0; i < this.posts.length; i++) {
let message = this.messageList[i]; let message = this.posts[i];
encoder.pushObject(null); encoder.pushObject(null);
encoder.setString("msg", message); encoder.setString("msg", message);
encoder.popObject(); encoder.popObject();

View File

@ -1,7 +1,7 @@
import {Action, decode, FetchRequest, PostRequest} from "./request"; import {Action, decode, FetchRequest, PostRequest} from "./request";
import {PostResponse, Message, FetchResponse, UnknownResponse} from "./response"; import {PostResponse, Message, FetchResponse, UnknownResponse} from "./response";
let messageList: Array<Message> = new Array<Message>(); let posts: Array<Message> = new Array<Message>();
// main handler for an application // main handler for an application
export function handler(input: string): string { export function handler(input: string): string {
@ -10,19 +10,19 @@ export function handler(input: string): string {
if (request.action == Action.Post) { if (request.action == Action.Post) {
let post = request as PostRequest; let post = request as PostRequest;
messageList.push(new Message(post.msg, post.handle)); posts.push(new Message(post.msg, post.handle));
let response = new PostResponse(messageList.length); let response = new PostResponse(posts.length);
return response.serialize() return response.serialize()
} else if (request.action == Action.Fetch) { } else if (request.action == Action.Fetch) {
let fetch = request as FetchRequest; let fetch = request as FetchRequest;
var messages: Array<Message>; var messages: Array<Message>;
if (fetch.filter_handle == null) { if (fetch.filter_handle == null) {
messages = messageList messages = posts
} else { } else {
let filter_handle = fetch.filter_handle as string; let filter_handle = fetch.filter_handle as string;
let filtered = new Array<Message>(); let filtered = new Array<Message>();
for (let i = 0; i < messageList.length; i++) { for (let i = 0; i < posts.length; i++) {
let message = messageList[i]; let message = posts[i];
if (message.handle == filter_handle) { if (message.handle == filter_handle) {
filtered.push(message) filtered.push(message)
} }

View File

@ -34,17 +34,17 @@ export class UnknownResponse extends Response {
} }
export class PostResponse extends Response { export class PostResponse extends Response {
numberOfTwits: i32; msgCount: i32;
constructor(numberOfTwits: i32) { constructor(msgCount: i32) {
super(); super();
this.numberOfTwits = numberOfTwits; this.msgCount = msgCount;
} }
serialize(): string { serialize(): string {
let encoder = new JSONEncoder(); let encoder = new JSONEncoder();
encoder.pushObject(null); encoder.pushObject(null);
encoder.setString("action", "Post"); encoder.setString("action", "Post");
encoder.setInteger("number_of_twits", this.numberOfTwits); encoder.setInteger("count", this.msgCount);
encoder.popObject(); encoder.popObject();
return encoder.toString(); return encoder.toString();
@ -52,20 +52,20 @@ export class PostResponse extends Response {
} }
export class FetchResponse extends Response { export class FetchResponse extends Response {
messageList: Array<Message>; posts: Array<Message>;
constructor(messageList: Array<Message>) { constructor(posts: Array<Message>) {
super(); super();
this.messageList = messageList; this.posts = posts;
} }
serialize(): string { serialize(): string {
let encoder = new JSONEncoder(); let encoder = new JSONEncoder();
encoder.pushObject(null); encoder.pushObject(null);
encoder.setString("action", "Fetch"); encoder.setString("action", "Fetch");
encoder.pushArray("message_list"); encoder.pushArray("posts");
for (let i = 0; i < this.messageList.length; i++) { for (let i = 0; i < this.posts.length; i++) {
let twit = this.messageList[i]; let twit = this.posts[i];
encoder.pushObject(null); encoder.pushObject(null);
encoder.setString("msg", twit.msg); encoder.setString("msg", twit.msg);
encoder.setString("handle", twit.handle); encoder.setString("handle", twit.handle);

View File

@ -1,5 +1,5 @@
import {log} from "../node_modules/assemblyscript-sdk/assembly/logger"; 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 { function doRequest(request: string): string {
@ -23,8 +23,18 @@ export function addMessage(msg: string, handle: string): void {
doRequest(request); doRequest(request);
} }
export function getMessages(): string { export function getMessages(handle: string | null): string {
let request = "SELECT * FROM messages"; if (handle) {
let result = doRequest(request); let request = 'SELECT json_group_array(json_object("msg", msg, "handle", handle)) AS json_result FROM (SELECT * FROM messages WHERE handle = "' + handle + '")';
return result; 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);
} }

View File

@ -1,6 +1,6 @@
import {Action, decode, FetchRequest, PostRequest} from "./request"; import {Action, decode, FetchRequest, PostRequest} from "./request";
import {PostResponse, Message, FetchResponse, UnknownResponse} from "./response"; import {PostResponse, Message, FetchResponse, UnknownResponse} from "./response";
import {addMessage, getMessages, initTables} from "./database"; import {addMessage, getMessages, getPostsCount, initTables} from "./database";
initTables(); initTables();
@ -12,29 +12,15 @@ export function handler(input: string): string {
if (request.action == Action.Post) { if (request.action == Action.Post) {
let post = request as PostRequest; let post = request as PostRequest;
addMessage(post.msg, post.handle); addMessage(post.msg, post.handle);
let response = new PostResponse(0); let count = getPostsCount();
let response = new PostResponse(count);
return response.serialize() return response.serialize()
} else if (request.action == Action.Fetch) { } else if (request.action == Action.Fetch) {
let fetch = request as FetchRequest; let fetch = request as FetchRequest;
let result = getMessages(); let result = getMessages(fetch.handle);
return result; return result;
/*if (fetch.filter_handle == null) {
messages = messageList
} else {
let filter_handle = fetch.filter_handle as string;
let filtered = new Array<Message>();
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(); let response = new UnknownResponse();

View File

@ -25,12 +25,12 @@ export class PostRequest extends Request {
} }
export class FetchRequest 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(); super();
this.action = Action.Fetch; this.action = Action.Fetch;
this.filter_handle = filter_handle; this.handle = handle;
} }
} }
@ -83,7 +83,6 @@ class RequestJSONEventsHandler extends JSONHandler {
this.msg = value; this.msg = value;
} else if (name == "handle") { } else if (name == "handle") {
this.handle = value; this.handle = value;
} else if (name == "filter_handle") {
this.filter_handle = value; this.filter_handle = value;
} }
// json scheme is not strict, so we won't throw an error on excess fields // json scheme is not strict, so we won't throw an error on excess fields

View File

@ -34,17 +34,17 @@ export class UnknownResponse extends Response {
} }
export class PostResponse extends Response { export class PostResponse extends Response {
numberOfTwits: i32; msgCount: u32;
constructor(numberOfTwits: i32) { constructor(msgCount: u32) {
super(); super();
this.numberOfTwits = numberOfTwits; this.msgCount = msgCount;
} }
serialize(): string { serialize(): string {
let encoder = new JSONEncoder(); let encoder = new JSONEncoder();
encoder.pushObject(null); encoder.pushObject(null);
encoder.setString("action", "Post"); encoder.setString("action", "Post");
encoder.setInteger("number_of_twits", this.numberOfTwits); encoder.setInteger("count", this.msgCount);
encoder.popObject(); encoder.popObject();
return encoder.toString(); return encoder.toString();
@ -52,20 +52,20 @@ export class PostResponse extends Response {
} }
export class FetchResponse extends Response { export class FetchResponse extends Response {
messageList: Array<Message>; posts: Array<Message>;
constructor(messageList: Array<Message>) { constructor(posts: Array<Message>) {
super(); super();
this.messageList = messageList; this.posts = posts;
} }
serialize(): string { serialize(): string {
let encoder = new JSONEncoder(); let encoder = new JSONEncoder();
encoder.pushObject(null); encoder.pushObject(null);
encoder.setString("action", "Fetch"); encoder.setString("action", "Fetch");
encoder.pushArray("message_list"); encoder.pushArray("posts");
for (let i = 0; i < this.messageList.length; i++) { for (let i = 0; i < this.posts.length; i++) {
let twit = this.messageList[i]; let twit = this.posts[i];
encoder.pushObject(null); encoder.pushObject(null);
encoder.setString("msg", twit.msg); encoder.setString("msg", twit.msg);
encoder.setString("handle", twit.handle); encoder.setString("handle", twit.handle);