fix: Resolve database issues

This commit is contained in:
Wanjohi
2025-09-20 03:56:51 +03:00
parent ecfdb5156e
commit df4af84d55
5 changed files with 60 additions and 53 deletions

View File

@@ -11,6 +11,7 @@ export const auth = new sst.cloudflare.Worker("Auth", {
link: [
database,
authStorage,
secret.POLAR_API_KEY,
secret.DISCORD_CLIENT_ID,
secret.DISCORD_CLIENT_SECRET,
],

View File

@@ -1,4 +1,5 @@
export const secret = {
DISCORD_CLIENT_ID: new sst.Secret("DISCORD_CLIENT_ID"),
DISCORD_CLIENT_SECRET: new sst.Secret("DISCORD_CLIENT_SECRET"),
POLAR_API_KEY: new sst.Secret("POLAR_API_KEY"),
};

View File

@@ -4,60 +4,57 @@ import { Resource } from "sst";
import { Polar as PolarSdk } from "@polar-sh/sdk";
import { validateEvent } from "@polar-sh/sdk/webhooks";
const polar = new PolarSdk({
accessToken: Resource.PolarSecret.value,
server: Resource.App.stage !== "production" ? "sandbox" : "production"
});
export namespace Polar {
export const client = polar;
export const client = () =>
new PolarSdk({
accessToken: Resource.POLAR_API_KEY.value,
server: Resource.App.stage !== "production" ? "sandbox" : "production",
});
export const fromUserEmail = fn(z.string().min(1), async (email) => {
try {
const customers = await client.customers.list({ email })
export const fromUserEmail = fn(z.string().min(1), async (email) => {
try {
const customers = await client().customers.list({ email });
if (customers.result.items.length === 0) {
return await client.customers.create({ email})
} else {
return customers.result.items[0]
}
} catch (err) {
//FIXME: This is the issue [Polar.sh/#5147](https://github.com/polarsource/polar/issues/5147)
// console.log("error", err)
return undefined
}
})
// const getProductIDs = (plan: z.infer<typeof planType>) => {
// switch (plan) {
// case "free":
// return [Resource.NestriFreeMonthly.value]
// case "pro":
// return [Resource.NestriProYearly.value, Resource.NestriProMonthly.value]
// case "family":
// return [Resource.NestriFamilyYearly.value, Resource.NestriFamilyMonthly.value]
// default:
// return [Resource.NestriFreeMonthly.value]
// }
// }
export const createPortal = fn(
z.string(),
async (customerId) => {
const session = await client.customerSessions.create({
customerId
})
return session.customerPortalUrl
}
)
//TODO: Implement this
export const handleWebhook = async (payload: ReturnType<typeof validateEvent>) => {
switch (payload.type) {
case "subscription.created":
const teamID = payload.data.metadata.teamID
}
if (customers.result.items.length === 0) {
return await client().customers.create({ email });
} else {
return customers.result.items[0];
}
} catch (err) {
//FIXME: This is the issue [Polar.sh/#5147](https://github.com/polarsource/polar/issues/5147)
// console.log("error", err)
return undefined;
}
}
});
// const getProductIDs = (plan: z.infer<typeof planType>) => {
// switch (plan) {
// case "free":
// return [Resource.NestriFreeMonthly.value]
// case "pro":
// return [Resource.NestriProYearly.value, Resource.NestriProMonthly.value]
// case "family":
// return [Resource.NestriFamilyYearly.value, Resource.NestriFamilyMonthly.value]
// default:
// return [Resource.NestriFreeMonthly.value]
// }
// }
export const createPortal = fn(z.string(), async (customerId) => {
const session = await client().customerSessions.create({
customerId,
});
return session.customerPortalUrl;
});
//TODO: Implement this
export const handleWebhook = async (
payload: ReturnType<typeof validateEvent>,
) => {
switch (payload.type) {
case "subscription.created":
const teamID = payload.data.metadata.teamID;
}
};
}

View File

@@ -21,6 +21,10 @@ declare module "sst" {
"type": "sst.sst.Linkable"
"user": string
}
"POLAR_API_KEY": {
"type": "sst.sst.Secret"
"value": string
}
}
}
// cloudflare

4
sst-env.d.ts vendored
View File

@@ -21,6 +21,10 @@ declare module "sst" {
"type": "sst.sst.Linkable"
"user": string
}
"POLAR_API_KEY": {
"type": "sst.sst.Secret"
"value": string
}
}
}
// cloudflare