@@ -2,7 +2,7 @@ import 'dotenv/config';
22import { Hono } from "hono" ;
33import { db } from '../db.js' ;
44import { zValidator } from '@hono/zod-validator' ;
5- import { SubscriptionCreate } from '../schema/index.js' ;
5+ import { SubscriptionCreate , SubscriptionDisable } from '../schema/index.js' ;
66import { eq } from 'drizzle-orm' ;
77import { subscriptionsTable } from '../db/schema/subscriptions.js' ;
88import { plansTable } from '../db/schema/plans.js' ;
@@ -74,5 +74,62 @@ subscriptionsRouter.post("/",
7474 }
7575)
7676
77+ subscriptionsRouter . post ( "/disable" ,
78+ zValidator ( 'json' , SubscriptionDisable ) ,
79+ async ( c ) => {
80+ const validateReq = c . req . valid ( 'json' )
81+ const api = await fetch ( `${ process . env . PAYSTACK_BASE_URL } /subscription/disable` , {
82+ method : "POST" ,
83+ headers : {
84+ "Authorization" : `Bearer ${ process . env . PAYSTACK_SECRET_KEY } ` ,
85+ 'Content-Type' : "application/json"
86+ } ,
87+ body : JSON . stringify ( validateReq )
88+ } )
89+
90+ const data = await api . json ( )
91+
92+ if ( ! data [ "status" ] ) {
93+ return c . json ( {
94+ status : false ,
95+ data : { }
96+ } , 500 )
97+ }
98+
99+ const subscription = await db . update ( subscriptionsTable ) . set ( {
100+ status : "disabled"
101+ } ) . where ( eq ( subscriptionsTable . code , validateReq . code ) )
102+ . returning ( )
103+
104+ return c . json ( {
105+ status : true ,
106+ data : subscription [ 0 ]
107+ } , 200 )
108+ }
109+ )
110+
111+ subscriptionsRouter . post ( "/:code/manage/email" , async ( c ) => {
112+ const code = c . req . param ( 'code' )
113+ const api = await fetch ( `${ process . env . PAYSTACK_BASE_URL } /subscription/${ code } /manage/email` , {
114+ method : "POST" ,
115+ headers : {
116+ "Authorization" : `Bearer ${ process . env . PAYSTACK_SECRET_KEY } ` ,
117+ 'Content-Type' : "application/json"
118+ }
119+ } )
120+
121+ const data = await api . json ( )
122+
123+ if ( ! data [ "status" ] ) {
124+ return c . json ( {
125+ status : false ,
126+ data : { }
127+ } , 500 )
128+ }
129+
130+ return c . json ( { data} , 200 )
131+ }
132+ )
133+
77134
78135export default subscriptionsRouter
0 commit comments