Spaces:
Sleeping
Sleeping
File size: 1,584 Bytes
90cbf22 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
import { v } from 'convex/values';
import { mutation, query } from './_generated/server';
import { insertInput } from './aiTown/insertInput';
import { conversationId, playerId } from './aiTown/ids';
export const listMessages = query({
args: {
worldId: v.id('worlds'),
conversationId,
},
handler: async (ctx, args) => {
const messages = await ctx.db
.query('messages')
.withIndex('conversationId', (q) => q.eq('worldId', args.worldId).eq('conversationId', args.conversationId))
.collect();
const out = [];
for (const message of messages) {
const playerDescription = await ctx.db
.query('playerDescriptions')
.withIndex('worldId', (q) => q.eq('worldId', args.worldId).eq('playerId', message.author))
.first();
if (!playerDescription) {
throw new Error(`Invalid author ID: ${message.author}`);
}
out.push({ ...message, authorName: playerDescription.name });
}
return out;
},
});
export const writeMessage = mutation({
args: {
worldId: v.id('worlds'),
conversationId,
messageUuid: v.string(),
playerId,
text: v.string(),
},
handler: async (ctx, args) => {
await ctx.db.insert('messages', {
conversationId: args.conversationId,
author: args.playerId,
messageUuid: args.messageUuid,
text: args.text,
worldId: args.worldId,
});
await insertInput(ctx, args.worldId, 'finishSendingMessage', {
conversationId: args.conversationId,
playerId: args.playerId,
timestamp: Date.now(),
});
},
});
|