diff --git a/src/lib/server/db/index.ts b/src/lib/server/db/index.ts index 5edf507..d965504 100644 --- a/src/lib/server/db/index.ts +++ b/src/lib/server/db/index.ts @@ -28,6 +28,17 @@ async function storeMessage(client: cassandra.Client, channelName: string, conte } } +async function getChannels(client: cassandra.Client): Promise { + try { + const res = await client.execute(`SELECT table_name FROM system_schema.tables WHERE keyspace_name = 'channels'`); + return res.rows; + } catch (e) { + // @ts-expect-error I don't like this thing yelling at me + console.log(`Error fetching channels: ${e.message}`); + return; + } +} + async function getMessages(client: cassandra.Client, channelName: string, limit: number): Promise { try { const res = await client.execute( @@ -65,4 +76,4 @@ try { process.exit(1); } -export { client, createChannel, getMessages, storeMessage }; +export { client, createChannel, getChannels, getMessages, storeMessage }; diff --git a/src/routes/+layout.server.ts b/src/routes/+layout.server.ts new file mode 100644 index 0000000..4bc4458 --- /dev/null +++ b/src/routes/+layout.server.ts @@ -0,0 +1,15 @@ +import { getChannels, client } from '$lib/server/db'; +import type { LayoutServerLoad } from './$types'; + +export const load: LayoutServerLoad = async () => { + const rows = await getChannels(client); + const channels: string[] = rows + ? rows.map((value) => { + return value.table_name; + }) + : []; + + return { + channels, + }; +}; diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index dd9063f..c17327f 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,9 +1,11 @@