@@ -21,6 +21,9 @@ import { postsTable } from '@/db/post.schema'
2121import { releasesTable } from '@/db/release.schema'
2222import { showSubscriptionsTable , showsTable } from '@/db/show.schema'
2323import { DatabaseError , getErrorMessage } from '@/errors'
24+ import { dieOnDatabaseError } from '@/http/handler-utils'
25+
26+ const dieOnAdminDatabaseError = dieOnDatabaseError ( 'admin' )
2427
2528type ContentTable =
2629 | typeof audioTable
@@ -511,17 +514,16 @@ export const AdminHandlersLive = HttpApiBuilder.group(Api, 'admin', (handlers) =
511514 . handle ( 'getAdminOverview' , ( ) =>
512515 Effect . gen ( function * ( ) {
513516 yield * requireAdmin
514- return yield * Effect . tryPromise ( {
515- try : ( ) => loadAdminOverview ( ) ,
516- catch : ( error ) =>
517- new DatabaseError ( {
518- message : `Failed to fetch admin overview: ${ getErrorMessage ( error ) } ` ,
519- operation : 'select' ,
520- table : 'admin-overview'
521- } )
522- } ) . pipe (
523- Effect . tapError ( ( cause ) => Effect . logError ( '[admin] overview query failed' , cause ) ) ,
524- Effect . catchTag ( 'DatabaseError' , ( cause ) => Effect . die ( cause ) )
517+ return yield * dieOnAdminDatabaseError (
518+ Effect . tryPromise ( {
519+ try : ( ) => loadAdminOverview ( ) ,
520+ catch : ( error ) =>
521+ new DatabaseError ( {
522+ message : `Failed to fetch admin overview: ${ getErrorMessage ( error ) } ` ,
523+ operation : 'select' ,
524+ table : 'admin-overview'
525+ } )
526+ } )
525527 )
526528 } )
527529 )
@@ -551,30 +553,27 @@ export const AdminHandlersLive = HttpApiBuilder.group(Api, 'admin', (handlers) =
551553 . handle ( 'getNewsletterSubscribers' , ( ) =>
552554 Effect . gen ( function * ( ) {
553555 yield * requireAdmin
554- const rows = yield * Effect . tryPromise ( {
555- try : ( ) =>
556- db
557- . select ( {
558- id : newsletterSubscribersTable . id ,
559- email : newsletterSubscribersTable . email ,
560- name : newsletterSubscribersTable . name ,
561- source : newsletterSubscribersTable . source ,
562- unsubscribedAt : newsletterSubscribersTable . unsubscribedAt ,
563- createdAt : newsletterSubscribersTable . createdAt
556+ const rows = yield * dieOnAdminDatabaseError (
557+ Effect . tryPromise ( {
558+ try : ( ) =>
559+ db
560+ . select ( {
561+ id : newsletterSubscribersTable . id ,
562+ email : newsletterSubscribersTable . email ,
563+ name : newsletterSubscribersTable . name ,
564+ source : newsletterSubscribersTable . source ,
565+ unsubscribedAt : newsletterSubscribersTable . unsubscribedAt ,
566+ createdAt : newsletterSubscribersTable . createdAt
567+ } )
568+ . from ( newsletterSubscribersTable )
569+ . orderBy ( desc ( newsletterSubscribersTable . createdAt ) ) ,
570+ catch : ( error ) =>
571+ new DatabaseError ( {
572+ message : `Failed to fetch newsletter subscribers: ${ getErrorMessage ( error ) } ` ,
573+ operation : 'select' ,
574+ table : 'newsletter_subscribers'
564575 } )
565- . from ( newsletterSubscribersTable )
566- . orderBy ( desc ( newsletterSubscribersTable . createdAt ) ) ,
567- catch : ( error ) =>
568- new DatabaseError ( {
569- message : `Failed to fetch newsletter subscribers: ${ getErrorMessage ( error ) } ` ,
570- operation : 'select' ,
571- table : 'newsletter_subscribers'
572- } )
573- } ) . pipe (
574- Effect . tapError ( ( cause ) =>
575- Effect . logError ( '[admin] newsletter subscribers query failed' , cause )
576- ) ,
577- Effect . catchTag ( 'DatabaseError' , ( cause ) => Effect . die ( cause ) )
576+ } )
578577 )
579578
580579 return {
0 commit comments