MCPcopy Create free account
hub / github.com/ShaanCoding/makeread.me / SideBarController

Class SideBarController

backend/src/api/sideBar/sideBar.controller.ts:6–162  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4import { ResponseStatus, ServiceResponse } from '@/common/models/serviceResponse'
5
6export default class SideBarController {
7 public async getAllTemplates(search: string, filter: string[], pageType: string): Promise<ServiceResponse<Template[] | null>> {
8 try {
9 let blocksData: FullTemplate[] = await FullTemplateModel.find({})
10
11 if (!blocksData) {
12 return this.handleNullBlocksData()
13 }
14
15 blocksData = this.sortBlocksByFeatured(blocksData)
16
17 // search goes through templates and returns ones that match title or description
18 if (search.length) {
19 blocksData = blocksData.filter((block: FullTemplate) => {
20 return block.title.toLowerCase().includes(search.toLowerCase()) || block.description.toLowerCase().includes(search.toLowerCase())
21 })
22 }
23
24 // filter by template tags (array)
25 // Returns blocks that have tags that match the filter
26 if (filter.length) {
27 blocksData = blocksData.filter((block: FullTemplate) => {
28 return block.tags.some((tag) => {
29 return filter.includes(tag.url)
30 })
31 })
32 }
33
34 // filter by pageType
35 if (pageType.length && pageType !== 'None') {
36 blocksData = blocksData.filter((block: FullTemplate) => {
37 return pageType.includes(block.pageType)
38 })
39 }
40
41 return new ServiceResponse<Template[]>(ResponseStatus.Success, 'Success', blocksData, StatusCodes.OK)
42 } catch (ex) {
43 return new ServiceResponse(ResponseStatus.Failed, 'Failed to get templates', null, StatusCodes.INTERNAL_SERVER_ERROR)
44 }
45 }
46
47 public async getAllSidebar(): Promise<ServiceResponse<SideBarOptions[] | null>> {
48 try {
49 let blocksData: FullTemplate[] = await FullTemplateModel.find({})
50
51 if (!blocksData) {
52 return this.handleNullBlocksData()
53 }
54 const sidebarOptionsSet: Set<string> = new Set<string>()
55
56 blocksData.map((block: FullTemplate) => {
57 block.tags.forEach((tag) => {
58 sidebarOptionsSet.add(JSON.stringify({ label: tag.name, value: tag.url }))
59 })
60 })
61
62 const sidebarOptions: SideBarOptions[] = Array.from(sidebarOptionsSet).map((option: string) => {
63 return JSON.parse(option)

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected