43 lines
No EOL
1.2 KiB
JavaScript
43 lines
No EOL
1.2 KiB
JavaScript
import { createClient } from '@supabase/supabase-js'
|
|
import { DateTime } from 'luxon'
|
|
|
|
const SUPABASE_URL = process.env.SUPABASE_URL
|
|
const SUPABASE_KEY = process.env.SUPABASE_KEY
|
|
const supabase = createClient(SUPABASE_URL, SUPABASE_KEY)
|
|
|
|
const fetchAlbumReleases = async () => {
|
|
const today = DateTime.utc().startOf('day').toSeconds()
|
|
|
|
const { data, error } = await supabase
|
|
.from('optimized_album_releases')
|
|
.select('*')
|
|
|
|
if (error) {
|
|
console.error('Error fetching data:', error)
|
|
return []
|
|
}
|
|
|
|
const all = data.map(album => {
|
|
const releaseDate = DateTime.fromSeconds(album['release_timestamp']).toUTC().startOf('day')
|
|
|
|
return {
|
|
...album,
|
|
description: album['artist']['description'],
|
|
date: releaseDate.toLocaleString(DateTime.DATE_FULL),
|
|
timestamp: releaseDate.toSeconds()
|
|
}
|
|
}).sort((a, b) => a['timestamp'] - b['timestamp'])
|
|
|
|
const upcoming = all.filter(album => album['release_timestamp'] > today)
|
|
|
|
return { all, upcoming }
|
|
}
|
|
|
|
export default async function () {
|
|
try {
|
|
return await fetchAlbumReleases()
|
|
} catch (error) {
|
|
console.error('Error fetching and processing album releases:', error)
|
|
return []
|
|
}
|
|
} |