Skip to content

Commit fe3fb42

Browse files
committed
feat : added unsuscribe from notification feature
1 parent 43196c6 commit fe3fb42

File tree

9 files changed

+204
-7
lines changed

9 files changed

+204
-7
lines changed

dist/controllers/subscription.js

+29-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
99
});
1010
};
1111
Object.defineProperty(exports, "__esModule", { value: true });
12-
exports.CreateListingSubscription = exports.CreateSubscription = void 0;
12+
exports.DeleteListingSubscription = exports.DeleteSubscription = exports.CreateListingSubscription = exports.CreateSubscription = void 0;
1313
const subscription_1 = require("../services/subscription");
1414
const CreateSubscription = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
1515
const userId = req.userId;
@@ -36,3 +36,31 @@ const CreateListingSubscription = (req, res) => __awaiter(void 0, void 0, void 0
3636
});
3737
});
3838
exports.CreateListingSubscription = CreateListingSubscription;
39+
const DeleteSubscription = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
40+
const userId = req.userId;
41+
const subscription = yield (0, subscription_1.DeleteSubscriptions)(userId);
42+
if (subscription.status == 404) {
43+
return res.status(subscription.status).json({
44+
message: subscription.message
45+
});
46+
}
47+
return res.status(subscription.status).json({
48+
message: subscription.message,
49+
data: subscription.data
50+
});
51+
});
52+
exports.DeleteSubscription = DeleteSubscription;
53+
const DeleteListingSubscription = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
54+
const userId = req.userId;
55+
const subscription = yield (0, subscription_1.DeleteListingSubscriptions)(userId);
56+
if (subscription.status == 404) {
57+
return res.status(subscription.status).json({
58+
message: subscription.message
59+
});
60+
}
61+
return res.status(subscription.status).json({
62+
message: subscription.message,
63+
data: subscription.data
64+
});
65+
});
66+
exports.DeleteListingSubscription = DeleteListingSubscription;

dist/repositories/subscription.js

+37-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
99
});
1010
};
1111
Object.defineProperty(exports, "__esModule", { value: true });
12-
exports.CreateListingSubsripton = exports.FindListingSuscribers = exports.FindMany = exports.Create = exports.findUnique = void 0;
12+
exports.ListingSubscriptionCount = exports.SubscriptionCount = exports.DeleteListingSubscription = exports.DeleteSubscription = exports.CreateListingSubsripton = exports.FindListingSuscribers = exports.FindMany = exports.Create = exports.findUnique = void 0;
1313
const db_1 = require("../db");
1414
const findUnique = ({ userId, location }) => __awaiter(void 0, void 0, void 0, function* () {
1515
const notification = yield db_1.prisma.subscription.findFirst({
@@ -57,3 +57,39 @@ const CreateListingSubsripton = ({ userId, listingId }) => __awaiter(void 0, voi
5757
return listing_suscription;
5858
});
5959
exports.CreateListingSubsripton = CreateListingSubsripton;
60+
const DeleteSubscription = (userId) => __awaiter(void 0, void 0, void 0, function* () {
61+
const subscription = yield db_1.prisma.subscription.deleteMany({
62+
where: {
63+
userId
64+
}
65+
});
66+
return subscription;
67+
});
68+
exports.DeleteSubscription = DeleteSubscription;
69+
const DeleteListingSubscription = (userId) => __awaiter(void 0, void 0, void 0, function* () {
70+
const subscription = yield db_1.prisma.listingNotifySubscription.deleteMany({
71+
where: {
72+
userId
73+
}
74+
});
75+
return subscription;
76+
});
77+
exports.DeleteListingSubscription = DeleteListingSubscription;
78+
const SubscriptionCount = (userId) => __awaiter(void 0, void 0, void 0, function* () {
79+
const count = yield db_1.prisma.subscription.count({
80+
where: {
81+
userId
82+
}
83+
});
84+
return count;
85+
});
86+
exports.SubscriptionCount = SubscriptionCount;
87+
const ListingSubscriptionCount = (userId) => __awaiter(void 0, void 0, void 0, function* () {
88+
const count = yield db_1.prisma.listingNotifySubscription.count({
89+
where: {
90+
userId
91+
}
92+
});
93+
return count;
94+
});
95+
exports.ListingSubscriptionCount = ListingSubscriptionCount;

dist/routes/subscriptionRoute.js

+2
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,6 @@ const subscription_1 = require("../controllers/subscription");
99
const router = express_1.default.Router();
1010
router.post('/createsubscription', authMiddleware_1.authMiddleware, subscription_1.CreateSubscription);
1111
router.post('/createlistingsubscription/:id', authMiddleware_1.authMiddleware, subscription_1.CreateListingSubscription);
12+
router.delete('/deletesubscription', authMiddleware_1.authMiddleware, subscription_1.DeleteSubscription);
13+
router.delete('/deletelistingsubscription', authMiddleware_1.authMiddleware, subscription_1.DeleteListingSubscription);
1214
exports.default = router;

dist/services/subscription.js

+33-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
99
});
1010
};
1111
Object.defineProperty(exports, "__esModule", { value: true });
12-
exports.CreateSubscriptionLisiting = exports.CreateSubscriptions = void 0;
12+
exports.DeleteListingSubscriptions = exports.DeleteSubscriptions = exports.CreateSubscriptionLisiting = exports.CreateSubscriptions = void 0;
1313
const subscription_1 = require("../repositories/subscription");
1414
const CreateSubscriptions = ({ userId, location }) => __awaiter(void 0, void 0, void 0, function* () {
1515
const suscribed = yield (0, subscription_1.findUnique)({ userId, location });
@@ -36,3 +36,35 @@ const CreateSubscriptionLisiting = (userId, listingId) => __awaiter(void 0, void
3636
};
3737
});
3838
exports.CreateSubscriptionLisiting = CreateSubscriptionLisiting;
39+
const DeleteSubscriptions = (userId) => __awaiter(void 0, void 0, void 0, function* () {
40+
const count = yield (0, subscription_1.SubscriptionCount)(userId);
41+
if (count == 0) {
42+
return {
43+
message: "You are not subscribed to any listing",
44+
status: 404
45+
};
46+
}
47+
const subscription = yield (0, subscription_1.DeleteSubscription)(userId);
48+
return {
49+
message: "Subscription deleted successfully",
50+
status: 200,
51+
data: subscription
52+
};
53+
});
54+
exports.DeleteSubscriptions = DeleteSubscriptions;
55+
const DeleteListingSubscriptions = (userId) => __awaiter(void 0, void 0, void 0, function* () {
56+
const count = yield (0, subscription_1.ListingSubscriptionCount)(userId);
57+
if (count == 0) {
58+
return {
59+
message: "You are not subscribed to any listing",
60+
status: 404
61+
};
62+
}
63+
const subscription = yield (0, subscription_1.DeleteListingSubscription)(userId);
64+
return {
65+
message: "Subscription deleted successfully",
66+
status: 200,
67+
data: subscription
68+
};
69+
});
70+
exports.DeleteListingSubscriptions = DeleteListingSubscriptions;

k8s/secret.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ metadata:
44
name: db-secret
55
type: Opaque
66
data:
7-
DATABASE_URL: cG9zdGdyZXNxbDovL25lb25kYl9vd25lcjpucGdfYndMNE9kdkFpZmM2QGVwLWNvbGQtdW5pdC1hODR5eXIyeS1wb29sZXIuZWFzdHVzMi5henVyZS5uZW9uLnRlY2gvbmVvbmRiP3NzbG1vZGU9cmVxdWlyZQ==
7+
DATABASE_URL: cG9zdGdyZXNxbDovL25lb25kYl9vd25lcjpucGdfYndMNE9kdkFpZmM2QGVwLWNvbGQtdW5pdC1hODR5eXIyeS1wb29sZXIuZWFzdHVzMi5henVyZS5uZW9uLnRlY2gvbmVvbmRiP3NzbG1vZGU9cmVxdWlyZQ==

src/controllers/subscription.ts

+30-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import express, { Request, Response } from "express";
2-
import { CreateSubscriptionLisiting, CreateSubscriptions } from "../services/subscription";
2+
import { CreateSubscriptionLisiting, CreateSubscriptions, DeleteListingSubscriptions, DeleteSubscriptions } from "../services/subscription";
33

44
export const CreateSubscription = async(req: Request , res : Response) : Promise<any> => {
55
const userId = req.userId
@@ -24,4 +24,33 @@ export const CreateListingSubscription = async(req: Request , res : Response) :
2424
message : subscription.message,
2525
data : subscription.data
2626
})
27+
}
28+
29+
export const DeleteSubscription = async (req : Request , res : Response) : Promise<any> => {
30+
const userId = req.userId
31+
const subscription = await DeleteSubscriptions(userId);
32+
if(subscription.status == 404){
33+
return res.status(subscription.status).json({
34+
message : subscription.message
35+
})
36+
}
37+
38+
return res.status(subscription.status).json({
39+
message : subscription.message,
40+
data : subscription.data
41+
})
42+
}
43+
44+
export const DeleteListingSubscription = async (req : Request , res : Response) : Promise<any> => {
45+
const userId = req.userId
46+
const subscription = await DeleteListingSubscriptions(userId);
47+
if(subscription.status == 404){
48+
return res.status(subscription.status).json({
49+
message : subscription.message
50+
})
51+
}
52+
return res.status(subscription.status).json({
53+
message : subscription.message,
54+
data : subscription.data
55+
})
2756
}

src/repositories/subscription.ts

+36
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,40 @@ export const CreateListingSubsripton = async({userId, listingId} : DeleteListin
4747
})
4848
return listing_suscription
4949

50+
}
51+
52+
export const DeleteSubscription = async(userId : string) => {
53+
const subscription = await prisma.subscription.deleteMany({
54+
where : {
55+
userId
56+
}
57+
})
58+
return subscription
59+
}
60+
61+
export const DeleteListingSubscription = async(userId : string) => {
62+
const subscription = await prisma.listingNotifySubscription.deleteMany({
63+
where : {
64+
userId
65+
}
66+
})
67+
return subscription
68+
}
69+
70+
export const SubscriptionCount = async(userId: string) => {
71+
const count = await prisma.subscription.count({
72+
where : {
73+
userId
74+
}
75+
})
76+
return count
77+
}
78+
79+
export const ListingSubscriptionCount = async(userId: string) => {
80+
const count = await prisma.listingNotifySubscription.count({
81+
where : {
82+
userId
83+
}
84+
})
85+
return count
5086
}

src/routes/subscriptionRoute.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import express from "express"
22

33
import { authMiddleware } from "../middleware/authMiddleware";
4-
import { CreateListingSubscription, CreateSubscription } from "../controllers/subscription";
4+
import { CreateListingSubscription, CreateSubscription, DeleteListingSubscription, DeleteSubscription } from "../controllers/subscription";
55
const router = express.Router();
66
router.post('/createsubscription' , authMiddleware , CreateSubscription);
77
router.post('/createlistingsubscription/:id' , authMiddleware , CreateListingSubscription);
8+
router.delete('/deletesubscription' , authMiddleware , DeleteSubscription)
9+
router.delete('/deletelistingsubscription' , authMiddleware , DeleteListingSubscription)
810
export default router

src/services/subscription.ts

+33-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { CreateSubscriptionInterface } from "../interface/subscriptionInterface"
2-
import { Create, CreateListingSubsripton, findUnique } from "../repositories/subscription"
2+
import { Create, CreateListingSubsripton, DeleteListingSubscription, DeleteSubscription, findUnique, ListingSubscriptionCount, SubscriptionCount } from "../repositories/subscription"
33

44
export const CreateSubscriptions = async ({userId , location} : CreateSubscriptionInterface) => {
55
const suscribed = await findUnique({userId , location} )
@@ -24,4 +24,36 @@ export const CreateSubscriptionLisiting = async (userId : string, listingId : st
2424
status : 200,
2525
data : subscription
2626
}
27+
}
28+
29+
export const DeleteSubscriptions = async (userId : string) => {
30+
const count = await SubscriptionCount(userId)
31+
if(count == 0){
32+
return {
33+
message : "You are not subscribed to any listing",
34+
status : 404
35+
}
36+
}
37+
const subscription = await DeleteSubscription(userId)
38+
return {
39+
message : "Subscription deleted successfully",
40+
status : 200,
41+
data : subscription
42+
}
43+
}
44+
45+
export const DeleteListingSubscriptions = async (userId : string) => {
46+
const count = await ListingSubscriptionCount(userId)
47+
if(count == 0){
48+
return {
49+
message : "You are not subscribed to any listing",
50+
status : 404
51+
}
52+
}
53+
const subscription = await DeleteListingSubscription(userId)
54+
return {
55+
message : "Subscription deleted successfully",
56+
status : 200,
57+
data : subscription
58+
}
2759
}

0 commit comments

Comments
 (0)