mirror of
https://github.com/fluencelabs/fluid
synced 2025-04-25 06:42:18 +00:00
Implement limit for AS
This commit is contained in:
parent
2146507ed9
commit
959143a5d7
@ -1,6 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
mkdir -p wasm
|
mkdir -p wasm
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ export function handler(input: string): string {
|
|||||||
} 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(fetch.username);
|
let result = getMessages(fetch.username, fetch.offset, fetch.count);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ export function createScheme(): void {
|
|||||||
export function addMessage(message: string, username: string): void {
|
export function addMessage(message: string, username: string): void {
|
||||||
log("add message");
|
log("add message");
|
||||||
}
|
}
|
||||||
export function getMessages(username: string | null): string {
|
export function getMessages(username: string | null, offset: u32, count: u32): string {
|
||||||
log("get messages");
|
log("get messages");
|
||||||
return "[]";
|
return "[]";
|
||||||
}
|
}
|
||||||
|
@ -26,11 +26,15 @@ export class PostRequest extends Request {
|
|||||||
|
|
||||||
export class FetchRequest extends Request {
|
export class FetchRequest extends Request {
|
||||||
public readonly username: string | null;
|
public readonly username: string | null;
|
||||||
|
public readonly offset: u32;
|
||||||
|
public readonly count: u32;
|
||||||
|
|
||||||
constructor(username: string | null) {
|
constructor(username: string | null, offset: u32, count: u32) {
|
||||||
super();
|
super();
|
||||||
this.action = Action.Fetch;
|
this.action = Action.Fetch;
|
||||||
this.username = username;
|
this.username = username;
|
||||||
|
this.offset = offset;
|
||||||
|
this.count = count;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,21 +50,21 @@ export function string2Bytes(str: string): Uint8Array {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function decode(input: string): Request {
|
export function decode(input: string): Request {
|
||||||
let jsonHandler = new RequestJSONEventsHandler();
|
let json = new RequestJSONEventsHandler();
|
||||||
let decoder = new JSONDecoder<RequestJSONEventsHandler>(jsonHandler);
|
let decoder = new JSONDecoder<RequestJSONEventsHandler>(json);
|
||||||
|
|
||||||
let bytes = string2Bytes(input);
|
let bytes = string2Bytes(input);
|
||||||
|
|
||||||
decoder.deserialize(bytes);
|
decoder.deserialize(bytes);
|
||||||
|
|
||||||
let action = jsonHandler.action;
|
let action = json.action;
|
||||||
|
|
||||||
let request: Request;
|
let request: Request;
|
||||||
|
|
||||||
if (action == "Fetch") {
|
if (action == "Fetch") {
|
||||||
request = new FetchRequest(jsonHandler.filter_handle);
|
request = new FetchRequest(json.filter_handle, json.offset, json.count);
|
||||||
} else if (action == "Post") {
|
} else if (action == "Post") {
|
||||||
request = new PostRequest(jsonHandler.message, jsonHandler.username)
|
request = new PostRequest(json.message, json.username)
|
||||||
} else {
|
} else {
|
||||||
request = new UnknownRequest()
|
request = new UnknownRequest()
|
||||||
}
|
}
|
||||||
@ -74,8 +78,12 @@ class RequestJSONEventsHandler extends JSONHandler {
|
|||||||
public message: string;
|
public message: string;
|
||||||
public username: string;
|
public username: string;
|
||||||
public filter_handle: string | null;
|
public filter_handle: string | null;
|
||||||
|
public offset: u32;
|
||||||
|
public count: u32;
|
||||||
|
|
||||||
setString(name: string, value: string): void {
|
setString(name: string, value: string): void {
|
||||||
|
this.offset = 0;
|
||||||
|
this.count = 0;
|
||||||
|
|
||||||
if (name == "action") {
|
if (name == "action") {
|
||||||
this.action = value;
|
this.action = value;
|
||||||
@ -84,6 +92,10 @@ class RequestJSONEventsHandler extends JSONHandler {
|
|||||||
} else if (name == "username") {
|
} else if (name == "username") {
|
||||||
this.username = value;
|
this.username = value;
|
||||||
this.filter_handle = value;
|
this.filter_handle = value;
|
||||||
|
} else if (name == "offset") {
|
||||||
|
this.offset = U32.parseInt(value);
|
||||||
|
} else if (name == "count") {
|
||||||
|
this.count = U32.parseInt(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
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
mkdir -p wasm
|
mkdir -p wasm
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
mkdir -p wasm
|
mkdir -p wasm
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ export function handler(input: string): string {
|
|||||||
} 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(fetch.username);
|
let result = getMessages(fetch.username, fetch.offset, fetch.count);
|
||||||
|
|
||||||
let response = decodePosts(result);
|
let response = decodePosts(result);
|
||||||
return response.serialize();
|
return response.serialize();
|
||||||
|
@ -10,19 +10,21 @@ export function addMessage(message: string, username: string): void {
|
|||||||
query(request);
|
query(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getMessages(username: string | null): string {
|
export function getMessages(username: string | null, offset: u32, count: u32): string {
|
||||||
|
let limitClause = ` LIMIT ` + count.toString() + ` OFFSET ` + offset.toString() + ` `;
|
||||||
if (username) {
|
if (username) {
|
||||||
|
let whereClause = ` WHERE username = "` + username + `" `;
|
||||||
let request =
|
let request =
|
||||||
`SELECT json_group_array(
|
`SELECT json_group_array(
|
||||||
json_object('message', message, 'username', username)
|
json_object('message', message, 'username', username)
|
||||||
) AS json_result FROM
|
) AS json_result FROM
|
||||||
(SELECT * FROM messages WHERE username = "` + username + `")`;
|
(SELECT * FROM messages` + whereClause + limitClause + `)`;
|
||||||
return query(request);
|
return query(request);
|
||||||
} else {
|
} else {
|
||||||
let request =
|
let request =
|
||||||
`SELECT json_group_array(
|
`SELECT json_group_array(
|
||||||
json_object('message', message, 'username', username)
|
json_object('message', message, 'username', username)
|
||||||
) AS json_result FROM (SELECT * FROM messages)`;
|
) AS json_result FROM (SELECT * FROM messages` + limitClause + `)`;
|
||||||
return query(request);
|
return query(request);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,11 +26,15 @@ export class PostRequest extends Request {
|
|||||||
|
|
||||||
export class FetchRequest extends Request {
|
export class FetchRequest extends Request {
|
||||||
public readonly username: string | null;
|
public readonly username: string | null;
|
||||||
|
public readonly offset: u32;
|
||||||
|
public readonly count: u32;
|
||||||
|
|
||||||
constructor(username: string | null) {
|
constructor(username: string | null, offset: u32, count: u32) {
|
||||||
super();
|
super();
|
||||||
this.action = Action.Fetch;
|
this.action = Action.Fetch;
|
||||||
this.username = username;
|
this.username = username;
|
||||||
|
this.offset = offset;
|
||||||
|
this.count = count;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,21 +50,21 @@ export function string2Bytes(str: string): Uint8Array {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function decode(input: string): Request {
|
export function decode(input: string): Request {
|
||||||
let jsonHandler = new RequestJSONEventsHandler();
|
let json = new RequestJSONEventsHandler();
|
||||||
let decoder = new JSONDecoder<RequestJSONEventsHandler>(jsonHandler);
|
let decoder = new JSONDecoder<RequestJSONEventsHandler>(json);
|
||||||
|
|
||||||
let bytes = string2Bytes(input);
|
let bytes = string2Bytes(input);
|
||||||
|
|
||||||
decoder.deserialize(bytes);
|
decoder.deserialize(bytes);
|
||||||
|
|
||||||
let action = jsonHandler.action;
|
let action = json.action;
|
||||||
|
|
||||||
let request: Request;
|
let request: Request;
|
||||||
|
|
||||||
if (action == "Fetch") {
|
if (action == "Fetch") {
|
||||||
request = new FetchRequest(jsonHandler.filter_handle);
|
request = new FetchRequest(json.filter_handle, json.offset, json.count);
|
||||||
} else if (action == "Post") {
|
} else if (action == "Post") {
|
||||||
request = new PostRequest(jsonHandler.message, jsonHandler.username)
|
request = new PostRequest(json.message, json.username)
|
||||||
} else {
|
} else {
|
||||||
request = new UnknownRequest()
|
request = new UnknownRequest()
|
||||||
}
|
}
|
||||||
@ -74,8 +78,12 @@ class RequestJSONEventsHandler extends JSONHandler {
|
|||||||
public message: string;
|
public message: string;
|
||||||
public username: string;
|
public username: string;
|
||||||
public filter_handle: string | null;
|
public filter_handle: string | null;
|
||||||
|
public offset: u32;
|
||||||
|
public count: u32;
|
||||||
|
|
||||||
setString(name: string, value: string): void {
|
setString(name: string, value: string): void {
|
||||||
|
this.offset = 0;
|
||||||
|
this.count = 0;
|
||||||
|
|
||||||
if (name == "action") {
|
if (name == "action") {
|
||||||
this.action = value;
|
this.action = value;
|
||||||
@ -84,6 +92,10 @@ class RequestJSONEventsHandler extends JSONHandler {
|
|||||||
} else if (name == "username") {
|
} else if (name == "username") {
|
||||||
this.username = value;
|
this.username = value;
|
||||||
this.filter_handle = value;
|
this.filter_handle = value;
|
||||||
|
} else if (name == "offset") {
|
||||||
|
this.offset = U32.parseInt(value);
|
||||||
|
} else if (name == "count") {
|
||||||
|
this.count = U32.parseInt(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
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
command -v jq >/dev/null 2>&1 || {
|
command -v jq >/dev/null 2>&1 || {
|
||||||
echo >&2 "jq is not installed, wouldn't parse responses"
|
echo >&2 "jq is not installed, wouldn't parse responses"
|
||||||
@ -64,7 +65,7 @@ echo "$RESPONSE" | jq . 2>/dev/null || echo "$RESPONSE"
|
|||||||
|
|
||||||
# Assign json to a variable using heredoc technique
|
# Assign json to a variable using heredoc technique
|
||||||
JSON=$(cat <<JSON
|
JSON=$(cat <<JSON
|
||||||
{"action":"Fetch", "handle": "random_joe"}
|
{"action":"Fetch", "handle": "random_joe", "offset": 0, "limit": 10}
|
||||||
JSON
|
JSON
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
mkdir -p wasm
|
mkdir -p wasm
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
mkdir -p wasm
|
mkdir -p wasm
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
mkdir -p wasm
|
mkdir -p wasm
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
mkdir -p wasm
|
mkdir -p wasm
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user