main f6d8405

chatRoomsInternal.ts RawHistoryFolder

1import { internalQuery, internalMutation } from './_generated/server';
2import { v } from 'convex/values';
3
4// Get chat room by ID (internal)
5export const getById = internalQuery({
6	args: { id: v.id('chatRooms') },
7	handler: async (ctx, args) => {
8		return await ctx.db.get(args.id);
9	}
10});
11
12// List all chat rooms (internal)
13export const list = internalQuery({
14	args: {},
15	handler: async (ctx) => {
16		return await ctx.db.query('chatRooms').collect();
17	}
18});
19
20// Create a chat room (internal)
21export const create = internalMutation({
22	args: {
23		name: v.optional(v.string()),
24		type: v.string()
25	},
26	handler: async (ctx, args) => {
27		const roomId = await ctx.db.insert('chatRooms', {
28			name: args.name,
29			type: args.type,
30			createdAt: Date.now()
31		});
32
33		return await ctx.db.get(roomId);
34	}
35});
36
37// Get or create the default "General" room (internal)
38export const getOrCreateDefault = internalMutation({
39	args: {},
40	handler: async (ctx) => {
41		// Look for existing General room
42		const rooms = await ctx.db.query('chatRooms').collect();
43		const generalRoom = rooms.find((r) => r.name === 'General' && r.type === 'group');
44
45		if (generalRoom) {
46			return generalRoom;
47		}
48
49		// Create default room
50		const roomId = await ctx.db.insert('chatRooms', {
51			name: 'General',
52			type: 'group',
53			createdAt: Date.now()
54		});
55
56		return await ctx.db.get(roomId);
57	}
58});

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 3

Tags 8

↑↓ moveenter openesc close