Skip to content

Commit d85b4dc

Browse files
Added subscription identifier in user schema.
1 parent 451dafe commit d85b4dc

2 files changed

Lines changed: 19 additions & 1 deletion

File tree

src/model/mongo/user.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,17 @@ export const userSchema = {
470470
write: SensitivityLevel.MEDIUM,
471471
},
472472
},
473+
subscriptionIdentifier: {
474+
type: mongoose.Schema.Types.Mixed,
475+
required: false,
476+
willProjectForUserSelect: true,
477+
willProjectForUserAdminSelect: true,
478+
willProjectForUserClientSelect: true,
479+
sensitivityScore: {
480+
read: SensitivityLevel.MEDIUM,
481+
write: SensitivityLevel.MEDIUM,
482+
},
483+
},
473484
credits: {
474485
type: Number,
475486
required: true,
@@ -752,6 +763,7 @@ export type UserInterface = {
752763
subscriptionActivatedAt: Date;
753764
subscriptionExpiry: Date;
754765
subscriptionTier: string;
766+
subscriptionIdentifier?: string | number;
755767
credits: number;
756768
scope: string[];
757769
invitedBy: string | ObjectId;
@@ -820,3 +832,4 @@ const schemaInstance = new mongoose.Schema(userSchema, {
820832
UserModel = mongoose.model("user", schemaInstance);
821833

822834
export default UserModel;
835+

src/service/api/user/shared/subscription.post.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export const POST_SubscriptionValidator = [
1919
body("state").exists().isBoolean(),
2020
body("expiry").optional().isISO8601(),
2121
body("tier").optional().isString().isLength({ max: 128 }),
22+
body("subscriptionIdentifier").optional().custom((value) => typeof value === "string" || typeof value === "number"),
2223
];
2324

2425
const POST_Subscription = async (req: Request, res: Response): Promise<void> => {
@@ -31,6 +32,7 @@ const POST_Subscription = async (req: Request, res: Response): Promise<void> =>
3132
const state = req.body.state;
3233
const tier = req.body.tier;
3334
const expiry = req.body.expiry;
35+
const subscriptionIdentifier = req.body.subscriptionIdentifier;
3436
if (state === true && !expiry) {
3537
const errors = [
3638
{
@@ -53,14 +55,17 @@ const POST_Subscription = async (req: Request, res: Response): Promise<void> =>
5355
res.status(statusCodes.clientInputError).json(new ErrorResponse(errorMessages.clientInputError, { errors }));
5456
return;
5557
}
56-
const query = {
58+
const query: any = {
5759
$set: {
5860
isSubscribed: state,
5961
subscriptionActivatedAt: moment().toDate(),
6062
subscriptionExpiry: moment(expiry).toDate(),
6163
subscriptionTier: tier || null,
6264
},
6365
};
66+
if (typeof subscriptionIdentifier !== 'undefined') {
67+
query.$set.subscriptionIdentifier = subscriptionIdentifier;
68+
}
6469
await UserModel.updateOne({ _id: target }, query);
6570
res.status(statusCodes.success).json(new SuccessResponse());
6671
flushUserInfoFromRedis(target);

0 commit comments

Comments
 (0)