Skip to content

Commit

Permalink
add get subscription paginated controller
Browse files Browse the repository at this point in the history
  • Loading branch information
huytran17 committed Sep 6, 2024
1 parent abca8d8 commit 7bb351a
Show file tree
Hide file tree
Showing 4 changed files with 72 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import { Request } from "express";
import { get } from "lodash";
import { HttpStatusCode } from "../../../../constants/http-status-code";
import {
GetSubscriptionsPaginated,
IGetSubscriptionsPaginated,
} from "../../../../use-cases/subscription/get-subscriptions-paginated";

export default function makeGetSubscriptionsPaginatedController({
getSubscriptionsPaginated,
}: {
getSubscriptionsPaginated: GetSubscriptionsPaginated;
}) {
return async function getSubscriptionsPaginatedController(
httpRequest: Request & { context: { validated: {} } }
) {
const headers = {
"Content-Type": "application/json",
};

try {
const { query, page, entries_per_page } = <IGetSubscriptionsPaginated>(
get(httpRequest, "context.validated", {})
);

const data = await getSubscriptionsPaginated({
query,
page: Number(page),
entries_per_page: Number(entries_per_page),
});

return {
headers,
statusCode: HttpStatusCode.OK,
body: {
data,
},
};
} catch (error) {
throw {
headers,
statusCode: HttpStatusCode.INTERNAL_SERVER_ERROR,
body: {
data: error.message,
},
};
}
};
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,16 @@
import {
getSubscriptionAnalystics,
getSubscriptions,
getSubscriptionsPaginated,
} from "../../../../use-cases/subscription";
import makeGetSubscriptionAnalysticsController from "./get-subscription-analystics";
import makeGetSubscriptionsController from "./get-subscriptions";
import makeGetSubscriptionsPaginatedController from "./get-subscriptions-paginated";

const getSubscriptionsPaginatedController =
makeGetSubscriptionsPaginatedController({
getSubscriptionsPaginated,
});

const getSubscriptionAnalysticsController =
makeGetSubscriptionAnalysticsController({
Expand All @@ -17,6 +24,11 @@ const getSubscriptionsController = makeGetSubscriptionsController({
export default Object.freeze({
getSubscriptionsController,
getSubscriptionAnalysticsController,
getSubscriptionsPaginatedController,
});

export { getSubscriptionAnalysticsController, getSubscriptionsController };
export {
getSubscriptionAnalysticsController,
getSubscriptionsController,
getSubscriptionsPaginatedController,
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
const getSubscriptionsPaginatedRules = {
query: "string",
page: "integer",
entries_per_page: "integer",
};

export default getSubscriptionsPaginatedRules;
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import getSubscriptionAnalysticsRules from "./get-subscription-analystics";
import getSubscriptionsPaginatedRules from "./get-subscriptions-paginated";

export default Object.freeze({
getSubscriptionAnalysticsRules,
getSubscriptionsPaginatedRules,
});

export { getSubscriptionAnalysticsRules };
export { getSubscriptionAnalysticsRules, getSubscriptionsPaginatedRules };

0 comments on commit 7bb351a

Please sign in to comment.