mirror of
https://github.com/nestriness/nestri.git
synced 2025-12-11 00:05:36 +02:00
fix: Resolve database issues
This commit is contained in:
@@ -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,
|
||||
],
|
||||
|
||||
@@ -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"),
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
4
cloud/packages/functions/sst-env.d.ts
vendored
4
cloud/packages/functions/sst-env.d.ts
vendored
@@ -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
4
sst-env.d.ts
vendored
@@ -21,6 +21,10 @@ declare module "sst" {
|
||||
"type": "sst.sst.Linkable"
|
||||
"user": string
|
||||
}
|
||||
"POLAR_API_KEY": {
|
||||
"type": "sst.sst.Secret"
|
||||
"value": string
|
||||
}
|
||||
}
|
||||
}
|
||||
// cloudflare
|
||||
|
||||
Reference in New Issue
Block a user