1
1
import * as mysql from 'mysql' ;
2
2
import { promisify } from 'util' ;
3
3
import { SessionProps , StoreData } from '../../types' ;
4
+ import { trialDays } from '../checkout' ;
4
5
5
6
const MYSQL_CONFIG = {
6
7
host : process . env . MYSQL_HOST ,
@@ -26,12 +27,17 @@ export async function setUser({ user }: SessionProps) {
26
27
}
27
28
28
29
export async function setStore ( session : SessionProps ) {
29
- const { access_token : accessToken , context, scope } = session ;
30
+ const {
31
+ access_token : accessToken ,
32
+ context,
33
+ scope,
34
+ user : { id } ,
35
+ } = session ;
30
36
// Only set on app install or update
31
37
if ( ! accessToken || ! scope ) return null ;
32
38
33
39
const storeHash = context ?. split ( '/' ) [ 1 ] || '' ;
34
- const storeData : StoreData = { accessToken, scope, storeHash } ;
40
+ const storeData : StoreData = { accessToken, adminId : id , scope, storeHash } ;
35
41
36
42
await query ( 'REPLACE INTO stores SET ?' , storeData ) ;
37
43
}
@@ -91,3 +97,47 @@ export async function getStoreToken(storeHash: string) {
91
97
export async function deleteStore ( { store_hash : storeHash } : SessionProps ) {
92
98
await query ( 'DELETE FROM stores WHERE storeHash = ?' , storeHash ) ;
93
99
}
100
+
101
+ // CHECKOUT Functions
102
+ export async function setStorePlan ( session : SessionProps ) {
103
+ const { access_token : accessToken , context, plan, sub } = session ;
104
+ // Only set on app install or subscription verification (load)
105
+ if ( ( ! accessToken && ! plan ?. pid ) || ( plan && ! plan . isPaidApp ) ) return null ;
106
+
107
+ const contextString = context ?? sub ;
108
+ const storeHash = contextString ?. split ( '/' ) [ 1 ] || '' ;
109
+ const defaultEnd = Date . now ( ) + ( trialDays * 24 * 60 * 60 * 1000 ) ;
110
+ const data = { pid : '' , isPaidApp : false , showPaidWelcome : false , storeHash, trialEndDate : defaultEnd , ...plan } ;
111
+
112
+ await query ( 'REPLACE INTO plan SET ?' , data ) ;
113
+ }
114
+
115
+ export async function getStorePlan ( storeHash : string ) {
116
+ if ( ! storeHash ) return null ;
117
+
118
+ const results = await query ( 'SELECT * FROM plan WHERE storeHash = ? LIMIT 1' , storeHash ) ;
119
+
120
+ return results . length ? results [ 0 ] : null ;
121
+ }
122
+
123
+ export async function setStoreWelcome ( storeHash : string , show : boolean ) {
124
+ if ( ! storeHash ) return null ;
125
+
126
+ const values = [ show , storeHash ] ;
127
+
128
+ await query ( 'UPDATE plan SET showPaidWelcome = ? WHERE storeHash = ?' , values ) ;
129
+ }
130
+
131
+ export async function setCheckoutId ( pid : string , checkoutId : string ) {
132
+ if ( ! pid || ! checkoutId ) return null ;
133
+
134
+ await query ( 'REPLACE INTO checkout SET ?' , { pid, checkoutId } ) ;
135
+ }
136
+
137
+ export async function getCheckoutId ( pid : string ) {
138
+ if ( ! pid ) return null ;
139
+
140
+ const results = await query ( 'SELECT checkoutId FROM checkout WHERE pid = ?' , pid ) ;
141
+
142
+ return results . length ? results [ 0 ] . checkoutId : null ;
143
+ }
0 commit comments