kepler-chat/src/lib/backend/convex
2025-06-18 08:44:53 -05:00
..
betterAuth.ts working chat 2025-06-16 18:50:51 +01:00
chat.ts trigger & grouping 2025-06-17 11:49:33 +01:00
conversations.ts Merge branch 'main' into web-search 2025-06-18 08:44:53 -05:00
functions.ts trigger & grouping 2025-06-17 11:49:33 +01:00
messages.ts Merge branch 'main' into web-search 2025-06-18 08:44:53 -05:00
README.md api keys (#3) 2025-06-14 04:40:01 -07:00
schema.ts Merge branch 'main' into web-search 2025-06-18 08:44:53 -05:00
storage.ts model picker (#17) 2025-06-18 06:33:15 -07:00
tsconfig.json working chat 2025-06-16 18:50:51 +01:00
user_enabled_models.ts trigger & grouping 2025-06-17 11:49:33 +01:00
user_keys.ts feat: Track model used to generate message and display generation cost (#14) 2025-06-17 13:21:59 -07:00
user_rules.ts trigger & grouping 2025-06-17 11:49:33 +01:00

Welcome to your Convex functions directory!

Write your Convex functions here. See https://docs.convex.dev/functions for more.

A query function that takes two arguments looks like:

// functions.js
import { query } from './_generated/server';
import { v } from 'convex/values';

export const myQueryFunction = query({
	// Validators for arguments.
	args: {
		first: v.number(),
		second: v.string(),
	},

	// Function implementation.
	handler: async (ctx, args) => {
		// Read the database as many times as you need here.
		// See https://docs.convex.dev/database/reading-data.
		const documents = await ctx.db.query('tablename').collect();

		// Arguments passed from the client are properties of the args object.
		console.log(args.first, args.second);

		// Write arbitrary JavaScript here: filter, aggregate, build derived data,
		// remove non-public properties, or create new objects.
		return documents;
	},
});

Using this query function in a React component looks like:

const data = useQuery(api.functions.myQueryFunction, {
	first: 10,
	second: 'hello',
});

A mutation function looks like:

// functions.js
import { mutation } from './_generated/server';
import { v } from 'convex/values';

export const myMutationFunction = mutation({
	// Validators for arguments.
	args: {
		first: v.string(),
		second: v.string(),
	},

	// Function implementation.
	handler: async (ctx, args) => {
		// Insert or modify documents in the database here.
		// Mutations can also read from the database like queries.
		// See https://docs.convex.dev/database/writing-data.
		const message = { body: args.first, author: args.second };
		const id = await ctx.db.insert('messages', message);

		// Optionally, return a value from your mutation.
		return await ctx.db.get(id);
	},
});

Using this mutation function in a React component looks like:

const mutation = useMutation(api.functions.myMutationFunction);
function handleButtonPress() {
	// fire and forget, the most common way to use mutations
	mutation({ first: 'Hello!', second: 'me' });
	// OR
	// use the result once the mutation has completed
	mutation({ first: 'Hello!', second: 'me' }).then((result) => console.log(result));
}

Use the Convex CLI to push your functions to a deployment. See everything the Convex CLI can do by running npx convex -h in your project root directory. To learn more, launch the docs with npx convex docs.