This repository has no description
1import { Router } from 'express';
2import { AddUrlToLibraryController } from '../controllers/AddUrlToLibraryController';
3import { AddCardToLibraryController } from '../controllers/AddCardToLibraryController';
4import { AddCardToCollectionController } from '../controllers/AddCardToCollectionController';
5import { UpdateNoteCardController } from '../controllers/UpdateNoteCardController';
6import { UpdateUrlCardAssociationsController } from '../controllers/UpdateUrlCardAssociationsController';
7import { RemoveCardFromLibraryController } from '../controllers/RemoveCardFromLibraryController';
8import { RemoveCardFromCollectionController } from '../controllers/RemoveCardFromCollectionController';
9import { GetUrlMetadataController } from '../controllers/GetUrlMetadataController';
10import { GetUrlCardViewController } from '../controllers/GetUrlCardViewController';
11import { GetLibrariesForCardController } from '../controllers/GetLibrariesForCardController';
12import { GetMyUrlCardsController } from '../controllers/GetMyUrlCardsController';
13import { GetUserUrlCardsController } from '../controllers/GetUserUrlCardsController';
14import { GetUrlStatusForMyLibraryController } from '../controllers/GetUrlStatusForMyLibraryController';
15import { GetLibrariesForUrlController } from '../controllers/GetLibrariesForUrlController';
16import { GetNoteCardsForUrlController } from '../controllers/GetNoteCardsForUrlController';
17import { AuthMiddleware } from 'src/shared/infrastructure/http/middleware';
18
19export function createCardRoutes(
20 authMiddleware: AuthMiddleware,
21 addUrlToLibraryController: AddUrlToLibraryController,
22 addCardToLibraryController: AddCardToLibraryController,
23 addCardToCollectionController: AddCardToCollectionController,
24 updateNoteCardController: UpdateNoteCardController,
25 updateUrlCardAssociationsController: UpdateUrlCardAssociationsController,
26 removeCardFromLibraryController: RemoveCardFromLibraryController,
27 removeCardFromCollectionController: RemoveCardFromCollectionController,
28 getUrlMetadataController: GetUrlMetadataController,
29 getUrlCardViewController: GetUrlCardViewController,
30 getLibrariesForCardController: GetLibrariesForCardController,
31 getMyUrlCardsController: GetMyUrlCardsController,
32 getUserUrlCardsController: GetUserUrlCardsController,
33 getUrlStatusForMyLibraryController: GetUrlStatusForMyLibraryController,
34 getLibrariesForUrlController: GetLibrariesForUrlController,
35 getNoteCardsForUrlController: GetNoteCardsForUrlController,
36): Router {
37 const router = Router();
38
39 // Query routes
40 // GET /api/cards/metadata - Get URL metadata
41 router.get('/metadata', authMiddleware.optionalAuth(), (req, res) =>
42 getUrlMetadataController.execute(req, res),
43 );
44
45 // GET /api/cards/my - Get my URL cards
46 router.get('/my', authMiddleware.ensureAuthenticated(), (req, res) =>
47 getMyUrlCardsController.execute(req, res),
48 );
49
50 // GET /api/cards/library/status - Get URL status for my library
51 router.get(
52 '/library/status',
53 authMiddleware.ensureAuthenticated(),
54 (req, res) => getUrlStatusForMyLibraryController.execute(req, res),
55 );
56
57 // GET /api/cards/libraries/url - Get libraries for URL
58 router.get('/libraries/url', authMiddleware.optionalAuth(), (req, res) =>
59 getLibrariesForUrlController.execute(req, res),
60 );
61
62 // GET /api/cards/notes/url - Get note cards for URL
63 router.get('/notes/url', authMiddleware.optionalAuth(), (req, res) =>
64 getNoteCardsForUrlController.execute(req, res),
65 );
66
67 // GET /api/cards/user/:identifier - Get user's URL cards by identifier
68 router.get('/user/:identifier', authMiddleware.optionalAuth(), (req, res) =>
69 getUserUrlCardsController.execute(req, res),
70 );
71
72 // GET /api/cards/:cardId - Get URL card view
73 router.get('/:cardId', authMiddleware.optionalAuth(), (req, res) =>
74 getUrlCardViewController.execute(req, res),
75 );
76
77 // GET /api/cards/:cardId/libraries - Get libraries for card
78 router.get('/:cardId/libraries', authMiddleware.optionalAuth(), (req, res) =>
79 getLibrariesForCardController.execute(req, res),
80 );
81
82 // Command routes
83 // POST /api/cards/library/urls - Add URL to library (with optional note and collections)
84 router.post(
85 '/library/urls',
86 authMiddleware.ensureAuthenticated(),
87 (req, res) => addUrlToLibraryController.execute(req, res),
88 );
89
90 // POST /api/cards/library - Add existing card to library
91 router.post('/library', authMiddleware.ensureAuthenticated(), (req, res) =>
92 addCardToLibraryController.execute(req, res),
93 );
94
95 // POST /api/cards/collections - Add card to collections
96 router.post(
97 '/collections',
98 authMiddleware.ensureAuthenticated(),
99 (req, res) => addCardToCollectionController.execute(req, res),
100 );
101
102 // PUT /api/cards/:cardId/note - Update note card content
103 router.put(
104 '/:cardId/note',
105 authMiddleware.ensureAuthenticated(),
106 (req, res) => updateNoteCardController.execute(req, res),
107 );
108
109 // PUT /api/cards/url/associations - Update URL card associations (note, collections)
110 router.put(
111 '/url/associations',
112 authMiddleware.ensureAuthenticated(),
113 (req, res) => updateUrlCardAssociationsController.execute(req, res),
114 );
115
116 // DELETE /api/cards/:cardId/library - Remove card from user's library
117 router.delete(
118 '/:cardId/library',
119 authMiddleware.ensureAuthenticated(),
120 (req, res) => removeCardFromLibraryController.execute(req, res),
121 );
122
123 // DELETE /api/cards/:cardId/collections - Remove card from specified collections
124 router.delete(
125 '/:cardId/collections',
126 authMiddleware.ensureAuthenticated(),
127 (req, res) => removeCardFromCollectionController.execute(req, res),
128 );
129
130 return router;
131}