Add dynamic text compiling and dynamic children list rendering on DOM.

This commit is contained in:
Clément Pons
2025-12-08 17:41:39 +01:00
parent b1229f81f6
commit 6f5566326e
20 changed files with 1500 additions and 312 deletions

View File

@@ -3,7 +3,6 @@ import { eq, or } from 'drizzle-orm';
import { z } from 'zod/v4';
import useDatabase from '~/composables/useDatabase';
import { usersTable } from '~/db/schema';
import sendMail from '~/../server/tasks/mail';
const schema = z.object({
profile: z.string(),
@@ -33,7 +32,7 @@ export default defineEventHandler(async (e) => {
id, timestamp,
}
});
await sendMail({
await runTask('mail', {
payload: {
type: 'mail',
data: {

View File

@@ -5,7 +5,6 @@ import { usersDataTable, usersTable } from '~/db/schema';
import { schema } from '~/schemas/registration';
import { checkSession, logSession } from '~/../server/utils/user';
import type { UserSession, UserSessionRequired } from '~/types/auth';
import sendMail from '~/../server/tasks/mail';
import type { $ZodIssue } from 'zod/v4/core';
interface SuccessHandler
@@ -75,7 +74,7 @@ export default defineEventHandler(async (e): Promise<Return> => {
logSession(e, await setUserSession(e, { user: { id: id.id, username: body.data.username, email: body.data.email, state: 0, signin: new Date(), permissions: [], lastTimestamp: new Date() } }) as UserSessionRequired);
await sendMail({
await runTask('mail', {
payload: {
type: 'mail',
to: [body.data.email],

View File

@@ -28,7 +28,7 @@ export default defineEventHandler(async (e) => {
const db = useDatabase();
const campaign = db.select({ id: campaignTable.id }).from(campaignMembersTable).innerJoin(campaignTable, eq(campaignMembersTable.id, campaignTable.id)).where(and(eq(campaignMembersTable.id, campaign_id), or(eq(campaignMembersTable.user, session.user.id), eq(campaignTable.owner, session.user.id)))).get();
const campaign = db.select({ id: campaignTable.id }).from(campaignTable).leftJoin(campaignMembersTable, eq(campaignTable.id, campaignMembersTable.id)).where(and(eq(campaignTable.id, campaign_id), or(eq(campaignMembersTable.user, session.user.id), eq(campaignTable.owner, session.user.id)))).get();
if(!campaign || campaign.id !== campaign_id)
return setResponseStatus(e, 404);

View File

@@ -1,7 +1,6 @@
import { and, eq, notExists } from 'drizzle-orm';
import { and, eq, or } from 'drizzle-orm';
import useDatabase from '~/composables/useDatabase';
import { campaignCharactersTable, campaignMembersTable, campaignTable, characterTable } from '~/db/schema';
import { CharacterVariablesValidation } from '#shared/character.util';
export default defineEventHandler(async (e) => {
const _id = getRouterParam(e, "id");
@@ -32,7 +31,7 @@ export default defineEventHandler(async (e) => {
if(!character || character.id !== id)
return setResponseStatus(e, 403);
const campaign = db.select({ id: campaignMembersTable.id }).from(campaignMembersTable).where(and(eq(campaignMembersTable.id, campaign_id), eq(campaignMembersTable.user, session.user.id))).get();
const campaign = db.select({ id: campaignTable.id }).from(campaignTable).leftJoin(campaignMembersTable, eq(campaignTable.id, campaignMembersTable.id)).where(and(eq(campaignTable.id, campaign_id), or(eq(campaignTable.owner, session.user.id), eq(campaignMembersTable.user, session.user.id)))).get();
if(!campaign || campaign.id !== campaign_id)
return setResponseStatus(e, 404);

View File

@@ -2,7 +2,6 @@ import { hash } from "bun";
import { eq } from "drizzle-orm";
import useDatabase from "~/composables/useDatabase";
import { usersTable } from "~/db/schema";
import sendMail from '~/../server/tasks/mail';
export default defineEventHandler(async (e) => {
const session = await getUserSession(e);
@@ -57,7 +56,7 @@ export default defineEventHandler(async (e) => {
id: emailId, timestamp,
}
});
await sendMail({
await runTask('mail', {
payload: {
type: 'mail',
to: [data.email],

View File

@@ -56,7 +56,7 @@ export default defineTask({
throw new Error(`Données inconnues`);
}
const mailPayload = payload.data as MailPayload;
const mailPayload = payload as MailPayload;
const template = templates[mailPayload.template];
console.log(mailPayload);