Skip to content

Commit

Permalink
switching to api/
Browse files Browse the repository at this point in the history
  • Loading branch information
cool-ant committed Oct 4, 2024
1 parent f0e701f commit cc055c9
Show file tree
Hide file tree
Showing 3 changed files with 91 additions and 19 deletions.
64 changes: 52 additions & 12 deletions services/user/Chainmail/plugin/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ mod bindings;

use bindings::exports::chainmail::plugin::api::{Error, Guest as API};
use bindings::exports::chainmail::plugin::queries::{Guest as QUERY, Message};
use bindings::host;
use bindings::host::common::server as CommonServer;
use bindings::host::common::types::{BodyTypes, PostRequest};
use bindings::transact::plugin::intf as Transact;
use psibase::fracpack::Pack;
use psibase::services::r_events::Wrapper as REventsSvc;
use psibase::AccountNumber;

struct ChainmailPlugin;
Expand Down Expand Up @@ -68,26 +68,66 @@ impl API for ChainmailPlugin {

impl QUERY for ChainmailPlugin {
fn get_msgs(sender: Option<String>, receiver: Option<String>) -> Result<Vec<Message>, Error> {
let archived_requested = false;
let sql_query_str = build_query(archived_requested, sender, receiver);
println!(
"get_msgs(sender[{}], receiver[{}]).top",
sender.clone().unwrap(),
receiver.clone().unwrap()
);
// let archived_requested = false;
// let sql_query_str = build_query(archived_requested, sender, receiver);
// println!("sql_query_str: {}", sql_query_str);
// need to call add_transaction(); can't call call() (not in a service)
// use host::server to call .get(<http>)
// let resp = REventsSvc::call().sqlQuery(sql_query_str);
// println!("response: {}", resp);
let query_result = CommonServer::post(&PostRequest {
endpoint: String::from("/sql"),
body: BodyTypes::Json(sql_query_str),
});
println!("query_results: {:#?}", query_result);
let results = query_result.unwrap();
println!("results: {}", results);
// let query_result = CommonServer::post(&PostRequest {
// endpoint: String::from("/sql"),
// body: BodyTypes::Json(sql_query_str),
// });

let resp = host::common::server::get_json(&format!(
"/api/messages?sender={}&receiver={}",
sender.unwrap(),
receiver.unwrap()
));
println!("inbox resp: {:#?}", resp);
Ok(vec![])

// println!("query_results: {:#?}", query_result);
// let results = query_result.unwrap();
// println!("results: {}", results);
// Ok(vec![])
}

fn get_archived_msgs(
_sender: Option<String>,
_receiver: Option<String>,
sender: Option<String>,
receiver: Option<String>,
) -> Result<Vec<Message>, Error> {
println!("get_archived_msgs TWO ().top");
// let archived_requested = true;
// let sql_query_str = build_query(archived_requested, sender, receiver);
// println!("sql_query_str: {}", sql_query_str);
// // need to call add_transaction(); can't call call() (not in a service)
// // use host::server to call .get(<http>)
// // let resp = REventsSvc::call().sqlQuery(sql_query_str);
// // println!("response: {}", resp);

// let endpoint = CommonServer::getSiblingUrl();
// let query_result = CommonServer::post(&PostRequest {
// endpoint: endpoint + "/sql",
// body: BodyTypes::Json(sql_query_str),
// });
// println!("query_results: {:#?}", query_result);
// let results = query_result.unwrap();
// println!("results: {}", results);
// Ok(vec![])

let resp = host::common::server::get_json(&format!(
"/api/messages?archived=true&sender={}&receiver={}",
sender.unwrap(),
receiver.unwrap()
));
println!("archived resp: {:#?}", resp);
Ok(vec![])
}
}
Expand Down
14 changes: 11 additions & 3 deletions services/user/Chainmail/service/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ use std::collections::HashMap;
use psibase::services::accounts::Wrapper as AccountsSvc;
use psibase::services::r_events::Wrapper as REventsSvc;
use psibase::AccountNumber;
use psibase::Hex;
use psibase::HttpReply;
use psibase::HttpRequest;

Expand Down Expand Up @@ -40,7 +41,7 @@ fn parse_query(query: &str) -> HashMap<String, String> {

fn serve_rest_api(request: &HttpRequest) -> Option<HttpReply> {
if request.method == "GET" {
if !request.target.starts_with("/messages") {
if !request.target.starts_with("/api/messages") {
return None;
}

Expand Down Expand Up @@ -123,11 +124,18 @@ fn serve_rest_api(request: &HttpRequest) -> Option<HttpReply> {
order_by_clause
);

let mq = make_query(request, sql_query_str.clone());
// let mq = make_query(request, sql_query_str.clone());

println!("query: {}", sql_query_str);

return REventsSvc::call().serveSys(mq);
let query_response = REventsSvc::call().sqlQuery(sql_query_str);

return Some(HttpReply {
status: 200,
contentType: request.contentType.clone(),
headers: vec![],
body: Hex(query_response.as_bytes().to_vec()),
});
}
return None;
}
Expand Down
32 changes: 28 additions & 4 deletions services/user/Chainmail/ui/src/hooks/use-mail.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { atom, useAtom } from "jotai";
import { useUser } from "./use-user";
import { useQuery } from "@tanstack/react-query";
import { useLocalStorage } from "./use-local-storage";
import { getSupervisor } from "@lib/supervisor";

const composeAtom = atom(false);
export function useCompose() {
Expand Down Expand Up @@ -51,8 +52,17 @@ const transformRawMessagesToMessages = (rawMessages: RawMessage[]) => {
};

const getIncomingMessages = async (account: string) => {
const res = await fetch(`/messages?receiver=${account}`);
const rawMessages = (await res.json()) as RawMessage[];
console.info("getInboxMessages().top");
const supervisor = await getSupervisor();
console.info("got Supervisor instance");
// const res = await fetch(`/messages?receiver=${account}`);
let rawMessages = (await supervisor.functionCall({
service: "chainmail",
intf: "queries",
method: "getMsgs",
params: ["", account],
})) as RawMessage[];
console.info("rawMessages: ", rawMessages);
return transformRawMessagesToMessages(rawMessages);
};

Expand All @@ -78,8 +88,21 @@ export function useIncomingMessages() {
}

const getArchivedMessages = async (account: string) => {
const res = await fetch(`/messages?archived=true&receiver=${account}`);
const rawMessages = (await res.json()) as RawMessage[];
console.info("getArchivedMessages().top");
// const res = await fetch(`/messages?archived=true&receiver=${account}`);
// const rawMessages = (await res.json()) as RawMessage[];
// return transformRawMessagesToMessages(rawMessages);

const supervisor = await getSupervisor();
console.info("[archived] got Supervisor instance");
// const res = await fetch(`/messages?receiver=${account}`);
let rawMessages = (await supervisor.functionCall({
service: "chainmail",
intf: "queries",
method: "getArchivedMsgs",
params: ["", account],
})) as RawMessage[];
console.info("rawMessages: ", rawMessages);
return transformRawMessagesToMessages(rawMessages);
};

Expand All @@ -105,6 +128,7 @@ export function useArchivedMessages() {
}

const getSentMessages = async (account: string) => {
console.info("getSentMessages().top");
const res = await fetch(`/messages?sender=${account}`);
const rawMessages = (await res.json()) as RawMessage[];
return transformRawMessagesToMessages(rawMessages);
Expand Down

0 comments on commit cc055c9

Please sign in to comment.