feat: Improve banner fetching logic and integrate Banner component
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
- Adjusted server logic in `/banners/active` to resolve timezone issues and ensure consistent date handling. - Sorted active banners by creation date in descending order for better relevance. - Integrated `Banner.astro` component into the homepage layout for displaying active banners.
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
import { FastifyPluginAsync } from 'fastify';
|
||||
import { db } from '../config/database.js';
|
||||
import { banners } from '../db/schema.js';
|
||||
import { eq, and, lte, gte } from 'drizzle-orm';
|
||||
import { eq, and, lte, gte, desc } from 'drizzle-orm';
|
||||
|
||||
const bannerBodyJsonSchema = {
|
||||
type: 'object',
|
||||
@ -18,7 +18,11 @@ const bannersRoute: FastifyPluginAsync = async (fastify) => {
|
||||
|
||||
// Get active banner (public endpoint)
|
||||
fastify.get('/banners/active', async (request, reply) => {
|
||||
const today = new Date().toISOString().split('T')[0]; // YYYY-MM-DD
|
||||
// Use local date to avoid timezone issues
|
||||
const now = new Date();
|
||||
const today = new Date(now.getTime() - (now.getTimezoneOffset() * 60000))
|
||||
.toISOString()
|
||||
.split('T')[0]; // YYYY-MM-DD
|
||||
|
||||
const [activeBanner] = await db
|
||||
.select()
|
||||
@ -30,6 +34,7 @@ const bannersRoute: FastifyPluginAsync = async (fastify) => {
|
||||
gte(banners.endDate, today)
|
||||
)
|
||||
)
|
||||
.orderBy(desc(banners.createdAt))
|
||||
.limit(1);
|
||||
|
||||
if (!activeBanner) {
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
---
|
||||
import Layout from "../components/Layout.astro";
|
||||
import Banner from "../components/Banner.astro";
|
||||
import Hero from "../components/Hero.astro";
|
||||
import Welcome from "../components/Welcome.astro";
|
||||
import EventsGrid from "../components/EventsGrid.astro";
|
||||
@ -75,6 +76,7 @@ const images = [
|
||||
---
|
||||
|
||||
<Layout>
|
||||
<Banner />
|
||||
<Hero id="hero" />
|
||||
<Welcome id="welcome" />
|
||||
<EventsGrid id="events" events={events} />
|
||||
|
||||
Reference in New Issue
Block a user