Skip to content

Commit

Permalink
catch sql error
Browse files Browse the repository at this point in the history
  • Loading branch information
bob2402 committed Jun 17, 2024
1 parent 53e1578 commit 4385f8d
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 33 deletions.
11 changes: 3 additions & 8 deletions main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -134,9 +134,7 @@ export async function run(args: {
} else {
if (typeof args.admin == "string") {
const p = PublicKey.FromString(args.admin);
if (p instanceof Error) {
return new Error("invalid admin public key");
}
if (p instanceof Error) return p;
args.admin = p;
}
}
Expand Down Expand Up @@ -432,13 +430,10 @@ const graphql_login_handler =
const members_handler = async (args: { get_space_members: func_GetSpaceMembers }) => {
const members = await args.get_space_members();
if (members instanceof Error) {
console.log(members);
console.error(members);
return new Response("", { status: 500 });
}
const body = {
data: members.map((event) => event.member),
};
const resp = new Response(JSON.stringify(body), {
const resp = new Response(JSON.stringify(members.map((event) => event.member)), {
status: 200,
});
resp.headers.set("content-type", "application/json; charset=utf-8");
Expand Down
46 changes: 21 additions & 25 deletions resolvers/policy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -115,10 +115,7 @@ export type func_GetSpaceMembers = () => Promise<SpaceMember[] | Error>;
export type func_AddSpaceMember = (event: SpaceMember) => Promise<void | Error>;
export type func_IsSpaceMember = (pubkey: string) => Promise<boolean | Error>;

export const get_space_members = (db?: DB): func_GetSpaceMembers => async () => {
if (!db) {
return new Error("get_space_members is not supported");
}
export const get_space_members = (db: DB): func_GetSpaceMembers => async () => {
const rows = db.query<[string]>(
"select event from events_v2 where kind = (?)",
[Kind_V2.SpaceMember],
Expand All @@ -135,37 +132,36 @@ export const get_space_members = (db?: DB): func_GetSpaceMembers => async () =>
};

export const add_space_member =
(args: { admin: PublicKey; db?: DB }): func_AddSpaceMember => async (event: SpaceMember) => {
if (!args.db) {
return new Error("add_space_member is not supported");
}
(args: { admin: PublicKey; db: DB }): func_AddSpaceMember => async (event: SpaceMember) => {
if (!(await verify_event_v2(event))) {
return new Error("Event verification failed");
}
if (event.pubkey != args.admin.hex) {
return new Error("Only administrators can add members to the space.");
}
if (await is_space_member({ db: args.db })(event.member)) {
if (await is_space_member({ ...args })(event.member)) {
return new Error(`${event.member} is already a member of the space.`);
}
args.db.query(
`INSERT INTO events_v2(id, pubkey, kind, event) VALUES (?, ?, ?, ?)`,
[event.id, event.pubkey, event.kind, JSON.stringify(event)],
);
try {
args.db.query(
`INSERT INTO events_v2(id, pubkey, kind, event) VALUES (?, ?, ?, ?)`,
[event.id, event.pubkey, event.kind, JSON.stringify(event)],
);
} catch (e) {
return e as Error;
}
};

export const is_space_member =
(args: { admin?: PublicKey; db?: DB }): func_IsSpaceMember => async (pubkey: string) => {
if (args.admin?.hex === pubkey) return true;

if (!args.db) {
return new Error("is_space_member is not supported");
(args: { admin: PublicKey; db: DB }): func_IsSpaceMember => async (pubkey: string) => {
if (args.admin.hex === pubkey) return true;
try {
const rows = args.db.query<[string]>(
"select event from events_v2 where kind = (?) and json_extract(event, '$.member') = (?)",
[Kind_V2.SpaceMember, pubkey],
);
return rows.length > 0;
} catch (e) {
return e as Error;
}
const rows = args.db.query<[string]>(
"select event from events_v2 where kind = (?) and json_extract(event, '$.member') = (?)",
[Kind_V2.SpaceMember, pubkey],
);
console.log("rows", rows);
if (rows.length > 0) return true;
return false;
};

0 comments on commit 4385f8d

Please sign in to comment.