resolve issues with new features
This commit is contained in:
@@ -6,6 +6,7 @@ import logger from '../utils/logger';
|
||||
const createSchema = z.object({
|
||||
message: z.string().min(1).max(2000),
|
||||
level: z.enum(['info', 'important', 'critical']).default('info'),
|
||||
show_as: z.enum(['banner', 'widget']).default('banner'),
|
||||
starts_at: z.string().datetime().optional(),
|
||||
ends_at: z.string().datetime().nullable().optional(),
|
||||
});
|
||||
|
||||
@@ -13,7 +13,7 @@ class VikunjaController {
|
||||
}
|
||||
try {
|
||||
const tasks = await vikunjaService.getMyTasks();
|
||||
res.status(200).json({ success: true, data: tasks, configured: true });
|
||||
res.status(200).json({ success: true, data: tasks, configured: true, vikunjaUrl: environment.vikunja.url });
|
||||
} catch (error) {
|
||||
logger.error('VikunjaController.getMyTasks error', { error });
|
||||
res.status(500).json({ success: false, message: 'Vikunja konnte nicht abgefragt werden' });
|
||||
@@ -46,7 +46,7 @@ class VikunjaController {
|
||||
}
|
||||
}
|
||||
|
||||
res.status(200).json({ success: true, data: tasks, configured: true });
|
||||
res.status(200).json({ success: true, data: tasks, configured: true, vikunjaUrl: environment.vikunja.url });
|
||||
} catch (error) {
|
||||
logger.error('VikunjaController.getOverdueTasks error', { error });
|
||||
res.status(500).json({ success: false, message: 'Vikunja konnte nicht abgefragt werden' });
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
ALTER TABLE announcement_banners
|
||||
ADD COLUMN show_as VARCHAR(20) NOT NULL DEFAULT 'banner'
|
||||
CHECK (show_as IN ('banner', 'widget'));
|
||||
@@ -4,6 +4,7 @@ export interface Banner {
|
||||
id: string;
|
||||
message: string;
|
||||
level: 'info' | 'important' | 'critical';
|
||||
show_as: 'banner' | 'widget';
|
||||
starts_at: string;
|
||||
ends_at: string | null;
|
||||
created_by: string | null;
|
||||
@@ -13,6 +14,7 @@ export interface Banner {
|
||||
export interface CreateBannerInput {
|
||||
message: string;
|
||||
level: 'info' | 'important' | 'critical';
|
||||
show_as?: 'banner' | 'widget';
|
||||
starts_at?: string;
|
||||
ends_at?: string | null;
|
||||
}
|
||||
@@ -39,9 +41,9 @@ class BannerService {
|
||||
|
||||
async create(data: CreateBannerInput, userId: string): Promise<Banner> {
|
||||
const result = await pool.query(
|
||||
`INSERT INTO announcement_banners (message, level, starts_at, ends_at, created_by)
|
||||
VALUES ($1, $2, $3, $4, $5) RETURNING *`,
|
||||
[data.message, data.level, data.starts_at ?? new Date().toISOString(), data.ends_at ?? null, userId]
|
||||
`INSERT INTO announcement_banners (message, level, show_as, starts_at, ends_at, created_by)
|
||||
VALUES ($1, $2, $3, $4, $5, $6) RETURNING *`,
|
||||
[data.message, data.level, data.show_as ?? 'banner', data.starts_at ?? new Date().toISOString(), data.ends_at ?? null, userId]
|
||||
);
|
||||
return result.rows[0];
|
||||
}
|
||||
|
||||
@@ -98,7 +98,7 @@ async function getRecentPages(): Promise<BookStackPage[]> {
|
||||
const pages: BookStackPage[] = response.data?.data ?? [];
|
||||
return pages.map((p) => ({
|
||||
...p,
|
||||
url: p.url && p.url.startsWith('http') ? p.url : `${bookstack.url}/books/${p.book_slug || p.book_id}/page/${p.slug}`,
|
||||
url: `${bookstack.url}/books/${p.book_slug || p.book_id}/page/${p.slug}`,
|
||||
}));
|
||||
} catch (error) {
|
||||
if (axios.isAxiosError(error)) {
|
||||
@@ -134,7 +134,7 @@ async function searchPages(query: string): Promise<BookStackSearchResult[]> {
|
||||
slug: item.slug,
|
||||
book_id: item.book_id ?? 0,
|
||||
book_slug: item.book_slug ?? '',
|
||||
url: item.url || `${bookstack.url}/books/${item.book_slug || item.book_id}/page/${item.slug}`,
|
||||
url: `${bookstack.url}/books/${item.book_slug || item.book_id}/page/${item.slug}`,
|
||||
preview_html: item.preview_html ?? { content: '' },
|
||||
tags: item.tags ?? [],
|
||||
}));
|
||||
@@ -189,7 +189,7 @@ async function getPageById(id: number): Promise<BookStackPageDetail> {
|
||||
html: page.html ?? '',
|
||||
created_at: page.created_at,
|
||||
updated_at: page.updated_at,
|
||||
url: page.url && page.url.startsWith('http') ? page.url : `${bookstack.url}/books/${page.book_slug || page.book_id}/page/${page.slug}`,
|
||||
url: `${bookstack.url}/books/${page.book_slug || page.book_id}/page/${page.slug}`,
|
||||
book: page.book,
|
||||
createdBy: page.created_by,
|
||||
updatedBy: page.updated_by,
|
||||
|
||||
Reference in New Issue
Block a user