const client = new Client()
.setEndpoint(process.env.APPWRITE_API_ENDPOINT)
.setProject(process.env.APPWRITE_FUNCTION_PROJECT_ID)
.setKey(process.env.APPWRITE_API_KEY);
if (req.method == "GET") {
return res.empty();
}
const databases = new Databases(client);
const users = new Users(client);
const body = await JSON.parse(req.bodyRaw);
if (body == undefined) {
return res.empty();
}
const entitlementId = body.event.entitlement_ids[0];
const purchasedAtTime = body.event.purchased_at_ms;
const expirationAtTime = body.event.expiration_at_ms;
const userId = body.event.app_user_id;
const type = body.event.type;
const teamMembership = await users.listMemberships(userId);
if (type == "RENEWAL" || type == "INITIAL_PURCHASE") {
const data = {
maxMembers: plans[entitlementId].members,
paymentDate: new Date(purchasedAtTime),
paymentDueDate: new Date(expirationAtTime),
status: "active",
ownerEmail: teamMembership.memberships[0].userEmail,
ownerName: teamMembership.memberships[0].userName,
};
await databases.updateDocument(
"DBID",
"ColledtionID",
teamMembership.memberships[0].teamId,
data
);
return res.empty();
} else if (type == "EXPIRATION") {
await databases.updateDocument(
"DBID",
"CollectionID",
teamMembership.memberships[0].teamId,
{
status: "inactive",
maxMembers: 1,
}
);
return res.empty();
}
};```