Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
H
hw86AlenBolatov
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Болатов Ален
hw86AlenBolatov
Commits
7b39228d
Commit
7b39228d
authored
Mar 11, 2023
by
Болатов Ален
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
#2
connected to mongodb
parent
98b1cb39
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
371 additions
and
21 deletions
+371
-21
.env
backend/.env
+4
-0
package-lock.json
backend/package-lock.json
+284
-5
package.json
backend/package.json
+4
-1
index.ts
backend/src/index.ts
+13
-4
links.ts
backend/src/models/links.ts
+5
-0
links.router.ts
backend/src/routes/links.router.ts
+32
-0
linksRouter.ts
backend/src/routes/linksRouter.ts
+0
-11
database.service.ts
backend/src/services/database.service.ts
+17
-0
environment.d.ts
backend/src/types/environment.d.ts
+12
-0
No files found.
backend/.env
0 → 100644
View file @
7b39228d
DB_CONN_STRING="mongodb://localhost:27017"
DB_NAME="linksDB"
LINKS_COLLECTION_NAME="links"
PORT='3000'
\ No newline at end of file
backend/package-lock.json
View file @
7b39228d
...
...
@@ -9,8 +9,11 @@
"version"
:
"1.0.0"
,
"license"
:
"ISC"
,
"dependencies"
:
{
"@types/node"
:
"^18.15.0"
,
"cors"
:
"^2.8.5"
,
"express"
:
"^4.18.2"
"dotenv"
:
"^16.0.3"
,
"express"
:
"^4.18.2"
,
"mongodb"
:
"^5.1.0"
},
"devDependencies"
:
{
"@types/cors"
:
"^2.8.13"
,
...
...
@@ -139,8 +142,7 @@
"node_modules/@types/node"
:
{
"version"
:
"18.15.0"
,
"resolved"
:
"https://registry.npmjs.org/@types/node/-/node-18.15.0.tgz"
,
"integrity"
:
"sha512-z6nr0TTEOBGkzLGmbypWOGnpSpSIBorEhC4L+4HeQ2iezKCi4f77kyslRwvHeNitymGQ+oFyIWGP96l/DPSV9w=="
,
"dev"
:
true
"integrity"
:
"sha512-z6nr0TTEOBGkzLGmbypWOGnpSpSIBorEhC4L+4HeQ2iezKCi4f77kyslRwvHeNitymGQ+oFyIWGP96l/DPSV9w=="
},
"node_modules/@types/qs"
:
{
"version"
:
"6.9.7"
,
...
...
@@ -176,6 +178,20 @@
"integrity"
:
"sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ=="
,
"dev"
:
true
},
"node_modules/@types/webidl-conversions"
:
{
"version"
:
"7.0.0"
,
"resolved"
:
"https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz"
,
"integrity"
:
"sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog=="
},
"node_modules/@types/whatwg-url"
:
{
"version"
:
"8.2.2"
,
"resolved"
:
"https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz"
,
"integrity"
:
"sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA=="
,
"dependencies"
:
{
"@types/node"
:
"*"
,
"@types/webidl-conversions"
:
"*"
}
},
"node_modules/accepts"
:
{
"version"
:
"1.3.8"
,
"resolved"
:
"https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz"
,
...
...
@@ -293,6 +309,14 @@
"node"
:
">=8"
}
},
"node_modules/bson"
:
{
"version"
:
"5.0.1"
,
"resolved"
:
"https://registry.npmjs.org/bson/-/bson-5.0.1.tgz"
,
"integrity"
:
"sha512-y09gBGusgHtinMon/GVbv1J6FrXhnr/+6hqLlSmEFzkz6PodqF6TxjyvfvY3AfO+oG1mgUtbC86xSbOlwvM62Q=="
,
"engines"
:
{
"node"
:
">=14.20.1"
}
},
"node_modules/buffer-from"
:
{
"version"
:
"1.1.2"
,
"resolved"
:
"https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz"
,
...
...
@@ -436,6 +460,14 @@
"node"
:
">=0.3.1"
}
},
"node_modules/dotenv"
:
{
"version"
:
"16.0.3"
,
"resolved"
:
"https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz"
,
"integrity"
:
"sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ=="
,
"engines"
:
{
"node"
:
">=12"
}
},
"node_modules/dynamic-dedupe"
:
{
"version"
:
"0.3.0"
,
"resolved"
:
"https://registry.npmjs.org/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz"
,
...
...
@@ -690,6 +722,11 @@
"resolved"
:
"https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
,
"integrity"
:
"sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"node_modules/ip"
:
{
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/ip/-/ip-2.0.0.tgz"
,
"integrity"
:
"sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ=="
},
"node_modules/ipaddr.js"
:
{
"version"
:
"1.9.1"
,
"resolved"
:
"https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz"
,
...
...
@@ -766,6 +803,12 @@
"node"
:
">= 0.6"
}
},
"node_modules/memory-pager"
:
{
"version"
:
"1.5.0"
,
"resolved"
:
"https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz"
,
"integrity"
:
"sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg=="
,
"optional"
:
true
},
"node_modules/merge-descriptors"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz"
,
...
...
@@ -842,6 +885,47 @@
"node"
:
">=10"
}
},
"node_modules/mongodb"
:
{
"version"
:
"5.1.0"
,
"resolved"
:
"https://registry.npmjs.org/mongodb/-/mongodb-5.1.0.tgz"
,
"integrity"
:
"sha512-qgKb7y+EI90y4weY3z5+lIgm8wmexbonz0GalHkSElQXVKtRuwqXuhXKccyvIjXCJVy9qPV82zsinY0W1FBnJw=="
,
"dependencies"
:
{
"bson"
:
"^5.0.1"
,
"mongodb-connection-string-url"
:
"^2.6.0"
,
"socks"
:
"^2.7.1"
},
"engines"
:
{
"node"
:
">=14.20.1"
},
"optionalDependencies"
:
{
"saslprep"
:
"^1.0.3"
},
"peerDependencies"
:
{
"@aws-sdk/credential-providers"
:
"^3.201.0"
,
"mongodb-client-encryption"
:
"^2.3.0"
,
"snappy"
:
"^7.2.2"
},
"peerDependenciesMeta"
:
{
"@aws-sdk/credential-providers"
:
{
"optional"
:
true
},
"mongodb-client-encryption"
:
{
"optional"
:
true
},
"snappy"
:
{
"optional"
:
true
}
}
},
"node_modules/mongodb-connection-string-url"
:
{
"version"
:
"2.6.0"
,
"resolved"
:
"https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz"
,
"integrity"
:
"sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ=="
,
"dependencies"
:
{
"@types/whatwg-url"
:
"^8.2.1"
,
"whatwg-url"
:
"^11.0.0"
}
},
"node_modules/ms"
:
{
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"
,
...
...
@@ -952,6 +1036,14 @@
"node"
:
">= 0.10"
}
},
"node_modules/punycode"
:
{
"version"
:
"2.3.0"
,
"resolved"
:
"https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz"
,
"integrity"
:
"sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA=="
,
"engines"
:
{
"node"
:
">=6"
}
},
"node_modules/qs"
:
{
"version"
:
"6.11.0"
,
"resolved"
:
"https://registry.npmjs.org/qs/-/qs-6.11.0.tgz"
,
...
...
@@ -1053,6 +1145,18 @@
"resolved"
:
"https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"
,
"integrity"
:
"sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"node_modules/saslprep"
:
{
"version"
:
"1.0.3"
,
"resolved"
:
"https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz"
,
"integrity"
:
"sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag=="
,
"optional"
:
true
,
"dependencies"
:
{
"sparse-bitfield"
:
"^3.0.3"
},
"engines"
:
{
"node"
:
">=6"
}
},
"node_modules/send"
:
{
"version"
:
"0.18.0"
,
"resolved"
:
"https://registry.npmjs.org/send/-/send-0.18.0.tgz"
,
...
...
@@ -1113,6 +1217,28 @@
"url"
:
"https://github.com/sponsors/ljharb"
}
},
"node_modules/smart-buffer"
:
{
"version"
:
"4.2.0"
,
"resolved"
:
"https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz"
,
"integrity"
:
"sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="
,
"engines"
:
{
"node"
:
">= 6.0.0"
,
"npm"
:
">= 3.0.0"
}
},
"node_modules/socks"
:
{
"version"
:
"2.7.1"
,
"resolved"
:
"https://registry.npmjs.org/socks/-/socks-2.7.1.tgz"
,
"integrity"
:
"sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ=="
,
"dependencies"
:
{
"ip"
:
"^2.0.0"
,
"smart-buffer"
:
"^4.2.0"
},
"engines"
:
{
"node"
:
">= 10.13.0"
,
"npm"
:
">= 3.0.0"
}
},
"node_modules/source-map"
:
{
"version"
:
"0.6.1"
,
"resolved"
:
"https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
,
...
...
@@ -1132,6 +1258,15 @@
"source-map"
:
"^0.6.0"
}
},
"node_modules/sparse-bitfield"
:
{
"version"
:
"3.0.3"
,
"resolved"
:
"https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz"
,
"integrity"
:
"sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ=="
,
"optional"
:
true
,
"dependencies"
:
{
"memory-pager"
:
"^1.0.2"
}
},
"node_modules/statuses"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz"
,
...
...
@@ -1190,6 +1325,17 @@
"node"
:
">=0.6"
}
},
"node_modules/tr46"
:
{
"version"
:
"3.0.0"
,
"resolved"
:
"https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz"
,
"integrity"
:
"sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA=="
,
"dependencies"
:
{
"punycode"
:
"^2.1.1"
},
"engines"
:
{
"node"
:
">=12"
}
},
"node_modules/tree-kill"
:
{
"version"
:
"1.2.2"
,
"resolved"
:
"https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz"
,
...
...
@@ -1344,6 +1490,26 @@
"node"
:
">= 0.8"
}
},
"node_modules/webidl-conversions"
:
{
"version"
:
"7.0.0"
,
"resolved"
:
"https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz"
,
"integrity"
:
"sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g=="
,
"engines"
:
{
"node"
:
">=12"
}
},
"node_modules/whatwg-url"
:
{
"version"
:
"11.0.0"
,
"resolved"
:
"https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz"
,
"integrity"
:
"sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ=="
,
"dependencies"
:
{
"tr46"
:
"^3.0.0"
,
"webidl-conversions"
:
"^7.0.0"
},
"engines"
:
{
"node"
:
">=12"
}
},
"node_modules/wrappy"
:
{
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
,
...
...
@@ -1485,8 +1651,7 @@
"@types/node"
:
{
"version"
:
"18.15.0"
,
"resolved"
:
"https://registry.npmjs.org/@types/node/-/node-18.15.0.tgz"
,
"integrity"
:
"sha512-z6nr0TTEOBGkzLGmbypWOGnpSpSIBorEhC4L+4HeQ2iezKCi4f77kyslRwvHeNitymGQ+oFyIWGP96l/DPSV9w=="
,
"dev"
:
true
"integrity"
:
"sha512-z6nr0TTEOBGkzLGmbypWOGnpSpSIBorEhC4L+4HeQ2iezKCi4f77kyslRwvHeNitymGQ+oFyIWGP96l/DPSV9w=="
},
"@types/qs"
:
{
"version"
:
"6.9.7"
,
...
...
@@ -1522,6 +1687,20 @@
"integrity"
:
"sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ=="
,
"dev"
:
true
},
"@types/webidl-conversions"
:
{
"version"
:
"7.0.0"
,
"resolved"
:
"https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz"
,
"integrity"
:
"sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog=="
},
"@types/whatwg-url"
:
{
"version"
:
"8.2.2"
,
"resolved"
:
"https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz"
,
"integrity"
:
"sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA=="
,
"requires"
:
{
"@types/node"
:
"*"
,
"@types/webidl-conversions"
:
"*"
}
},
"accepts"
:
{
"version"
:
"1.3.8"
,
"resolved"
:
"https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz"
,
...
...
@@ -1614,6 +1793,11 @@
"fill-range"
:
"^7.0.1"
}
},
"bson"
:
{
"version"
:
"5.0.1"
,
"resolved"
:
"https://registry.npmjs.org/bson/-/bson-5.0.1.tgz"
,
"integrity"
:
"sha512-y09gBGusgHtinMon/GVbv1J6FrXhnr/+6hqLlSmEFzkz6PodqF6TxjyvfvY3AfO+oG1mgUtbC86xSbOlwvM62Q=="
},
"buffer-from"
:
{
"version"
:
"1.1.2"
,
"resolved"
:
"https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz"
,
...
...
@@ -1718,6 +1902,11 @@
"integrity"
:
"sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A=="
,
"dev"
:
true
},
"dotenv"
:
{
"version"
:
"16.0.3"
,
"resolved"
:
"https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz"
,
"integrity"
:
"sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ=="
},
"dynamic-dedupe"
:
{
"version"
:
"0.3.0"
,
"resolved"
:
"https://registry.npmjs.org/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz"
,
...
...
@@ -1917,6 +2106,11 @@
"resolved"
:
"https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
,
"integrity"
:
"sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"ip"
:
{
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/ip/-/ip-2.0.0.tgz"
,
"integrity"
:
"sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ=="
},
"ipaddr.js"
:
{
"version"
:
"1.9.1"
,
"resolved"
:
"https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz"
,
...
...
@@ -1972,6 +2166,12 @@
"resolved"
:
"https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz"
,
"integrity"
:
"sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="
},
"memory-pager"
:
{
"version"
:
"1.5.0"
,
"resolved"
:
"https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz"
,
"integrity"
:
"sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg=="
,
"optional"
:
true
},
"merge-descriptors"
:
{
"version"
:
"1.0.1"
,
"resolved"
:
"https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz"
,
...
...
@@ -2021,6 +2221,26 @@
"integrity"
:
"sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
,
"dev"
:
true
},
"mongodb"
:
{
"version"
:
"5.1.0"
,
"resolved"
:
"https://registry.npmjs.org/mongodb/-/mongodb-5.1.0.tgz"
,
"integrity"
:
"sha512-qgKb7y+EI90y4weY3z5+lIgm8wmexbonz0GalHkSElQXVKtRuwqXuhXKccyvIjXCJVy9qPV82zsinY0W1FBnJw=="
,
"requires"
:
{
"bson"
:
"^5.0.1"
,
"mongodb-connection-string-url"
:
"^2.6.0"
,
"saslprep"
:
"^1.0.3"
,
"socks"
:
"^2.7.1"
}
},
"mongodb-connection-string-url"
:
{
"version"
:
"2.6.0"
,
"resolved"
:
"https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz"
,
"integrity"
:
"sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ=="
,
"requires"
:
{
"@types/whatwg-url"
:
"^8.2.1"
,
"whatwg-url"
:
"^11.0.0"
}
},
"ms"
:
{
"version"
:
"2.0.0"
,
"resolved"
:
"https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"
,
...
...
@@ -2101,6 +2321,11 @@
"ipaddr.js"
:
"1.9.1"
}
},
"punycode"
:
{
"version"
:
"2.3.0"
,
"resolved"
:
"https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz"
,
"integrity"
:
"sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA=="
},
"qs"
:
{
"version"
:
"6.11.0"
,
"resolved"
:
"https://registry.npmjs.org/qs/-/qs-6.11.0.tgz"
,
...
...
@@ -2164,6 +2389,15 @@
"resolved"
:
"https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"
,
"integrity"
:
"sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"saslprep"
:
{
"version"
:
"1.0.3"
,
"resolved"
:
"https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz"
,
"integrity"
:
"sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag=="
,
"optional"
:
true
,
"requires"
:
{
"sparse-bitfield"
:
"^3.0.3"
}
},
"send"
:
{
"version"
:
"0.18.0"
,
"resolved"
:
"https://registry.npmjs.org/send/-/send-0.18.0.tgz"
,
...
...
@@ -2217,6 +2451,20 @@
"object-inspect"
:
"^1.9.0"
}
},
"smart-buffer"
:
{
"version"
:
"4.2.0"
,
"resolved"
:
"https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz"
,
"integrity"
:
"sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="
},
"socks"
:
{
"version"
:
"2.7.1"
,
"resolved"
:
"https://registry.npmjs.org/socks/-/socks-2.7.1.tgz"
,
"integrity"
:
"sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ=="
,
"requires"
:
{
"ip"
:
"^2.0.0"
,
"smart-buffer"
:
"^4.2.0"
}
},
"source-map"
:
{
"version"
:
"0.6.1"
,
"resolved"
:
"https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
,
...
...
@@ -2233,6 +2481,15 @@
"source-map"
:
"^0.6.0"
}
},
"sparse-bitfield"
:
{
"version"
:
"3.0.3"
,
"resolved"
:
"https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz"
,
"integrity"
:
"sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ=="
,
"optional"
:
true
,
"requires"
:
{
"memory-pager"
:
"^1.0.2"
}
},
"statuses"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz"
,
...
...
@@ -2270,6 +2527,14 @@
"resolved"
:
"https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz"
,
"integrity"
:
"sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
},
"tr46"
:
{
"version"
:
"3.0.0"
,
"resolved"
:
"https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz"
,
"integrity"
:
"sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA=="
,
"requires"
:
{
"punycode"
:
"^2.1.1"
}
},
"tree-kill"
:
{
"version"
:
"1.2.2"
,
"resolved"
:
"https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz"
,
...
...
@@ -2364,6 +2629,20 @@
"resolved"
:
"https://registry.npmjs.org/vary/-/vary-1.1.2.tgz"
,
"integrity"
:
"sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
},
"webidl-conversions"
:
{
"version"
:
"7.0.0"
,
"resolved"
:
"https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz"
,
"integrity"
:
"sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g=="
},
"whatwg-url"
:
{
"version"
:
"11.0.0"
,
"resolved"
:
"https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz"
,
"integrity"
:
"sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ=="
,
"requires"
:
{
"tr46"
:
"^3.0.0"
,
"webidl-conversions"
:
"^7.0.0"
}
},
"wrappy"
:
{
"version"
:
"1.0.2"
,
"resolved"
:
"https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
,
...
...
backend/package.json
View file @
7b39228d
...
...
@@ -10,8 +10,11 @@
"author"
:
""
,
"license"
:
"ISC"
,
"dependencies"
:
{
"@types/node"
:
"^18.15.0"
,
"cors"
:
"^2.8.5"
,
"express"
:
"^4.18.2"
"dotenv"
:
"^16.0.3"
,
"express"
:
"^4.18.2"
,
"mongodb"
:
"^5.1.0"
},
"devDependencies"
:
{
"@types/cors"
:
"^2.8.13"
,
...
...
backend/src/index.ts
View file @
7b39228d
import
express
,
{
Express
}
from
'express'
;
import
{
linksRouter
}
from
'./routes/linksRouter'
;
import
{
linksRouter
}
from
'./routes/links.router'
;
import
{
connectToDatabase
}
from
'./services/database.service'
;
const
app
:
Express
=
express
();
app
.
use
(
express
.
json
());
app
.
use
(
'/links'
,
linksRouter
);
app
.
listen
(
3000
,
()
=>
{
console
.
log
(
`Server is listening on port 3000`
);
});
connectToDatabase
()
.
then
(()
=>
{
app
.
use
(
'/links'
,
linksRouter
);
app
.
listen
(
process
.
env
.
PORT
,
()
=>
{
console
.
log
(
`Server started at http://localhost:
${
process
.
env
.
PORT
}
`
);
});
})
.
catch
((
error
:
Error
)
=>
{
console
.
log
(
'Database connection failed'
);
process
.
exit
();
});
backend/src/models/links.ts
0 → 100644
View file @
7b39228d
import
{
ObjectId
}
from
'mongodb'
;
export
default
class
Link
{
constructor
(
public
originalUrl
:
string
,
public
id
?:
ObjectId
)
{}
}
backend/src/routes/links.router.ts
0 → 100644
View file @
7b39228d
import
express
,
{
Router
,
Request
,
Response
}
from
'express'
;
import
{
ObjectId
}
from
'mongodb'
;
import
{
collections
}
from
'../services/database.service'
;
import
Link
from
'../models/links'
;
export
const
linksRouter
:
Router
=
express
.
Router
();
linksRouter
.
get
(
'/'
,
(
req
:
Request
,
res
:
Response
)
=>
{
try
{
res
.
send
(
'Hello'
);
}
catch
(
error
:
unknown
)
{
const
err
=
error
as
Error
;
res
.
status
(
500
).
send
(
err
.
message
);
}
});
linksRouter
.
post
(
'/'
,
async
(
req
:
Request
,
res
:
Response
)
=>
{
try
{
const
newLink
=
req
.
body
as
Link
;
const
result
=
await
collections
.
links
?.
insertOne
(
newLink
);
if
(
result
)
{
res
.
status
(
201
)
.
send
(
`Successfully created a new link with id
${
result
.
insertedId
}
`
);
}
else
{
res
.
status
(
500
).
send
(
'Failed to create a new link.'
);
}
}
catch
(
err
:
unknown
)
{
const
error
=
err
as
Error
;
res
.
status
(
500
).
send
(
error
.
message
);
}
});
backend/src/routes/linksRouter.ts
deleted
100644 → 0
View file @
98b1cb39
import
express
,
{
Router
,
Request
,
Response
}
from
'express'
;
export
const
linksRouter
:
Router
=
express
.
Router
();
linksRouter
.
get
(
'/'
,
(
req
:
Request
,
res
:
Response
)
=>
{
res
.
send
(
'Hello'
);
});
linksRouter
.
post
(
'/'
,
(
req
:
Request
,
res
:
Response
)
=>
{
res
.
send
(
'Hello'
);
});
backend/src/services/database.service.ts
0 → 100644
View file @
7b39228d
import
*
as
mongoDB
from
'mongodb'
;
import
*
as
dotenv
from
'dotenv'
;
export
const
collections
:
{
links
?:
mongoDB
.
Collection
}
=
{};
export
const
connectToDatabase
=
async
()
=>
{
dotenv
.
config
();
const
client
:
mongoDB
.
MongoClient
=
new
mongoDB
.
MongoClient
(
process
.
env
.
DB_CONN_STRING
);
await
client
.
connect
();
const
db
:
mongoDB
.
Db
=
client
.
db
(
process
.
env
.
DB_NAME
);
const
linksCollection
:
mongoDB
.
Collection
=
db
.
collection
(
process
.
env
.
LINKS_COLLECTION_NAME
);
collections
.
links
=
linksCollection
;
console
.
log
(
'Connected to database'
);
};
backend/src/types/environment.d.ts
0 → 100644
View file @
7b39228d
declare
global
{
namespace
NodeJS
{
interface
ProcessEnv
{
PORT
:
string
;
DB_CONN_STRING
:
string
;
DB_NAME
:
string
;
LINKS_COLLECTION_NAME
:
string
;
}
}
}
export
{};
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment