Skip to content

Commit

Permalink
+
Browse files Browse the repository at this point in the history
  • Loading branch information
BlowaterNostr committed May 14, 2024
1 parent 8d1f6bc commit 1f1db3c
Show file tree
Hide file tree
Showing 7 changed files with 99 additions and 213 deletions.
1 change: 1 addition & 0 deletions _libs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ export * from "https://raw.githubusercontent.com/BlowaterNostr/nostr.ts/main/_he
export * from "https://raw.githubusercontent.com/BlowaterNostr/nostr.ts/main/event.ts";
export * from "https://raw.githubusercontent.com/BlowaterNostr/nostr.ts/main/relay-single.ts";
export * from "https://raw.githubusercontent.com/BlowaterNostr/nostr.ts/main/relay.interface.ts";
export * from "https://raw.githubusercontent.com/BlowaterNostr/nostr.ts/main/nip19.ts";
75 changes: 42 additions & 33 deletions main.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@ import { PolicyStore } from "./resolvers/policy.ts";
import { Policies } from "./resolvers/policy.ts";
import {
event_schema_sqlite,
func_DeleteEventsFromPubkey,
func_GetDeletedEventIDs,
func_GetEventCount,
func_GetEventsByAuthors,
func_GetReplaceableEvents,
Expand All @@ -35,28 +33,29 @@ import {
RelayInformationStore,
RelayInformationStringify,
} from "./resolvers/nip11.ts";
import {
Event_V1_Store,
func_DeleteEvent,
func_GetEventsByFilter,
func_GetEventsByIDs,
func_GetEventsByKinds,
func_WriteRegularEvent,
} from "./resolvers/event.ts";
import { func_GetEventsByFilter, func_GetEventsByIDs, func_WriteRegularEvent } from "./resolvers/event.ts";
import { Cookie, getCookies, setCookie } from "https://deno.land/[email protected]/http/cookie.ts";
import { Event_V2, Kind_V2 } from "./events.ts";
import {
create_channel_sqlite,
edit_channel_sqlite,
func_CreateChannel,
func_EditChannel,
get_channel_by_id_sqlite,
sqlite_schema,
} from "./channel.ts";
import { func_GetChannelByID } from "./channel.ts";
import { DB } from "https://deno.land/x/[email protected]/mod.ts";
import { get_relay_members } from "./resolvers/policy.ts";
import { get_event_by_id } from "https://raw.githubusercontent.com/BlowaterNostr/nostr.ts/main/relay-single-test.ts";
import { get_events_by_filter } from "./resolvers/event.ts";
import { get_events_by_filter_sqlite } from "./resolvers/event.ts";
import { get_event_count_sqlite } from "./resolvers/event.ts";
import {
func_DeleteEvent,
func_DeleteEventsFromPubkey,
func_GetDeletedEventIDs,
} from "./resolvers/event_deletion.ts";
import { delete_event_sqlite } from "./resolvers/event_deletion.ts";

const schema = gql.buildSchema(gql.print(typeDefs));

Expand Down Expand Up @@ -122,6 +121,7 @@ export async function run(args: {
const write_replaceable_event = write_replaceable_event_sqlite(db);
const write_regular_event = write_regular_event_sqlite(db);
const get_event_count = get_event_count_sqlite(db);
const get_events_by_filter = get_events_by_filter_sqlite(db);

// Administrator Keys
let admin_pubkey: string | undefined | PublicKey | Error = args.default_information?.pubkey;
Expand Down Expand Up @@ -175,8 +175,6 @@ export async function run(args: {
},
);

const eventStore = await Event_V1_Store.New(kv);

const port = args.port || 8000;
delete args.port;
const server = Deno.serve(
Expand All @@ -190,22 +188,26 @@ export async function run(args: {
},
root_handler({
...args,
// deletion
delete_event: delete_event_sqlite(db),
delete_events_from_pubkey: async () => {
return [];
},
get_deleted_event_ids: async () => {
return [];
},
connections,
resolvePolicyByKind: policyStore.resolvePolicyByKind,
get_events_by_IDs: eventStore.get_events_by_IDs.bind(eventStore),
get_event_count,
delete_event: eventStore.delete_event,
delete_events_from_pubkey: eventStore.delete_events_from_pubkey,
get_deleted_event_ids: eventStore.get_deleted_event_ids,
get_events_by_filter: get_events_by_filter(db),
get_events_by_filter,
write_regular_event,
write_replaceable_event,
policyStore,
relayInformationStore,
get_relay_members: get_relay_members(db),
kv,
db: db,
// get_channel_by_name: get_channel_by_name(db)
create_channel: create_channel_sqlite(db),
edit_channel: edit_channel_sqlite(db),
kv: kv,
_debug: args._debug ? true : false,
}),
);
Expand All @@ -229,7 +231,12 @@ export async function run(args: {
set_relay_information: relayInformationStore.set_relay_information,
get_relay_information: relayInformationStore.resolveRelayInformation,
// event
get_event: eventStore.get_event,
get_event: async (id) => {
const events = await get_events_by_filter({
ids: [id],
});
return events[0];
},
// channel
get_channel_by_id: (id: string) => {
return get_channel_by_id(id);
Expand All @@ -245,17 +252,22 @@ const root_handler = (
policyStore: PolicyStore;
relayInformationStore: RelayInformationStore;
// get_channel_by_name: func_GetChannelByName;
// channel
create_channel: func_CreateChannel;
edit_channel: func_EditChannel;
// deletion
delete_event: func_DeleteEvent;
delete_events_from_pubkey: func_DeleteEventsFromPubkey;
// get
get_deleted_event_ids: func_GetDeletedEventIDs;
write_regular_event: func_WriteRegularEvent;
write_replaceable_event: func_WriteReplaceableEvent;
get_events_by_IDs: func_GetEventsByIDs;
get_events_by_filter: func_GetEventsByFilter;
get_event_count: func_GetEventCount;
// write
write_regular_event: func_WriteRegularEvent;
write_replaceable_event: func_WriteReplaceableEvent;
// relay
get_relay_members: func_GetRelayMembers;
kv: Deno.Kv;
db?: DB;
_debug: boolean;
},
) =>
Expand Down Expand Up @@ -304,9 +316,6 @@ async (req: Request, info: Deno.ServeHandlerInfo) => {
}
}
} else if (req.method == "POST") {
if (!args.db) {
return new Response("POST is not supported in this environment", { status: 400 });
}
const text = await req.text();
const event = parseJSON<Event_V2>(text);
if (event instanceof Error) {
Expand All @@ -319,14 +328,14 @@ async (req: Request, info: Deno.ServeHandlerInfo) => {
return new Response("event is not valid", { status: 400 });
}
if (event.kind == Kind_V2.ChannelCreation) {
const ok = await create_channel_sqlite(args.db)(event);
const ok = await args.create_channel(event);
if (ok) {
return new Response();
} else {
return new Response("failed to write event", { status: 400 });
}
} else if (event.kind == Kind_V2.ChannelEdition) {
const res = await edit_channel_sqlite(args.db)(event);
const res = await args.edit_channel(event);
if (res instanceof Error) {
return new Response(res.message, { status: 400 });
}
Expand All @@ -343,14 +352,12 @@ async (req: Request, info: Deno.ServeHandlerInfo) => {

const graphql_handler = (
args: {
kv: Deno.Kv;
// policy
policyStore: PolicyStore;
// relay info
relayInformationStore: RelayInformationStore;
// get
get_events_by_filter: func_GetEventsByFilter;
get_events_by_IDs: func_GetEventsByIDs;
get_event_count: func_GetEventCount;
// write
write_regular_event: func_WriteRegularEvent;
Expand All @@ -361,6 +368,8 @@ const graphql_handler = (
get_deleted_event_ids: func_GetDeletedEventIDs;
// relay members
get_relay_members: func_GetRelayMembers;
// kv
kv: Deno.Kv;
},
) =>
async (req: Request) => {
Expand Down
1 change: 1 addition & 0 deletions makefile
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ test: fmt
--allow-env=DENO_DEPLOYMENT_ID,DENO_DIR,HOME \
--coverage \
# --filter $(filter) \
--trace-leaks \
test.ts

cov:
Expand Down
Loading

1 comment on commit 1f1db3c

@deno-deploy
Copy link

@deno-deploy deno-deploy bot commented on 1f1db3c May 14, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Failed to deploy:

UNCAUGHT_EXCEPTION

PermissionDenied: Requires write access to "relayed.db", run again with the --allow-write flag
    at Object.openSync (ext:deno_fs/30_fs.js:620:15)
    at js_open (https://deno.land/x/[email protected]/build/vfs.js:29:24)
    at <anonymous> (wasm://wasm/0028679a:1:5566)
    at <anonymous> (wasm://wasm/0028679a:1:145428)
    at <anonymous> (wasm://wasm/0028679a:1:141310)
    at <anonymous> (wasm://wasm/0028679a:1:147518)
    at <anonymous> (wasm://wasm/0028679a:1:3869)
    at <anonymous> (wasm://wasm/0028679a:1:611986)
    at https://deno.land/x/[email protected]/src/db.ts:41:63
    at setStr (https://deno.land/x/[email protected]/src/wasm.ts:12:20)

Please sign in to comment.