feat: Replace Meetings with Calendar - events with types and assigned users

- Rename meetings table to events with type field (meeting/event)
- Add eventUsers junction table for user assignments
- Members see only events they're assigned to
- Calendar endpoint returns events + todos for month
- Add migration SQL for database changes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
richardtekula
2025-12-15 10:50:31 +01:00
parent f828af562d
commit 3eb2f6ea02
10 changed files with 589 additions and 362 deletions

View File

@@ -242,11 +242,12 @@ export const timesheets = pgTable('timesheets', {
updatedAt: timestamp('updated_at').defaultNow().notNull(),
});
// Meetings table - meetingy/stretnutia (iba admin môže CRUD)
export const meetings = pgTable('meetings', {
// Events table - udalosti v kalendári (meeting/event)
export const events = pgTable('events', {
id: uuid('id').primaryKey().defaultRandom(),
title: text('title').notNull(),
description: text('description'),
type: text('type').notNull().default('meeting'), // 'meeting' | 'event'
start: timestamp('start', { withTimezone: true }).notNull(),
end: timestamp('end', { withTimezone: true }).notNull(),
createdBy: uuid('created_by').references(() => users.id, { onDelete: 'set null' }),
@@ -254,6 +255,16 @@ export const meetings = pgTable('meetings', {
updatedAt: timestamp('updated_at', { withTimezone: true }).defaultNow().notNull(),
});
// Event Users - many-to-many medzi events a users (kto vidí udalosť)
export const eventUsers = pgTable('event_users', {
id: uuid('id').primaryKey().defaultRandom(),
eventId: uuid('event_id').references(() => events.id, { onDelete: 'cascade' }).notNull(),
userId: uuid('user_id').references(() => users.id, { onDelete: 'cascade' }).notNull(),
assignedAt: timestamp('assigned_at').defaultNow().notNull(),
}, (table) => ({
eventUserUnique: unique('event_user_unique').on(table.eventId, table.userId),
}));
// Time Entries table - sledovanie odpracovaného času používateľov
export const timeEntries = pgTable('time_entries', {
id: uuid('id').primaryKey().defaultRandom(),