Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
2
2021-155
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
2021-155
2021-155
Commits
b1063c95
Commit
b1063c95
authored
Aug 28, 2021
by
Kamal Thennakoon
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
create portfolio-user routes
parent
a12e8dc4
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
159 additions
and
46 deletions
+159
-46
portfolio-backend/controllers/user-controller.js
portfolio-backend/controllers/user-controller.js
+143
-36
portfolio-backend/models/user.js
portfolio-backend/models/user.js
+11
-9
portfolio-backend/routes/user-routes.js
portfolio-backend/routes/user-routes.js
+5
-1
No files found.
portfolio-backend/controllers/user-controller.js
View file @
b1063c95
...
...
@@ -2,6 +2,145 @@ const { default: axios } = require("axios");
const
HttpError
=
require
(
"
../helpers/http-error
"
);
const
User
=
require
(
"
../models/user
"
);
const
checkUserAvailabity
=
async
(
req
,
res
,
next
)
=>
{
const
reqUsername
=
req
.
params
.
username
;
const
username
=
reqUsername
.
toLowerCase
();
try
{
const
user
=
await
User
.
findOne
({
username
});
console
.
log
(
username
);
if
(
user
)
{
return
res
.
status
(
200
).
json
({
msg
:
"
User portfolio exists
"
,
valid
:
true
,
});
}
else
{
return
res
.
status
(
200
).
json
({
msg
:
"
No portfolio exists
"
,
valid
:
false
,
});
}
}
catch
(
err
)
{
return
res
.
status
(
304
).
json
({
msg
:
"
something else went wrong:
"
,
err
,
});
}
};
const
getAllUserNames
=
async
(
req
,
res
,
next
)
=>
{
let
usernames
;
try
{
usernames
=
await
User
.
find
().
select
(
"
username
"
);
res
.
status
(
201
).
json
(
usernames
);
}
catch
(
err
)
{
res
.
status
(
302
).
json
({
msg
:
"
something went wrong::
"
,
err
});
}
};
const
sortedLeaderboardUsers
=
async
(
req
,
res
,
next
)
=>
{
let
usernames
;
try
{
usernames
=
await
User
.
find
().
select
(
"
username name git_points
"
).
sort
({
git_points
:
-
1
});
res
.
status
(
201
).
json
(
usernames
);
}
catch
(
err
)
{
res
.
status
(
302
).
json
({
msg
:
"
something went wrong::
"
,
err
});
}
};
const
createUser
=
async
(
req
,
res
,
next
)
=>
{
const
reqUsername
=
req
.
params
.
username
;
const
username
=
reqUsername
.
toLowerCase
();
let
user
;
try
{
user
=
await
User
.
findOne
({
username
});
if
(
user
)
{
console
.
log
(
"
user already exists
"
);
return
res
.
status
(
201
).
json
({
msg
:
"
user exists
"
,
valid
:
false
});
}
else
{
user
=
new
User
({
username
,
});
await
user
.
save
();
return
res
.
status
(
201
).
json
({
msg
:
"
user has been created successfully
"
,
valid
:
true
,
});
}
}
catch
(
err
)
{
console
.
log
(
"
error:
"
,
err
);
return
res
.
status
(
302
).
json
({
msg
:
`something went wrong:
${
err
}
`
,
valid
:
false
,
});
}
};
const
saveUserGitInfo
=
async
(
req
,
res
,
next
)
=>
{
const
{
username
,
name
,
avatar_url
,
bio
,
company
,
location
,
created_at
,
git_level
,
git_score
,
git_badge
,
git_points
,
total_prs
,
total_commits
,
total_issues
,
total_stars
,
contributed_to
,
}
=
req
.
body
;
console
.
log
(
"
retrived Data set
"
,
req
.
body
);
const
lowercasedUser
=
username
.
toLowerCase
();
try
{
console
.
log
(
'
lowerCasedUser
'
,
lowercasedUser
);
let
user
=
await
User
.
findOne
({
username
:
lowercasedUser
});
console
.
log
(
'
user info:
'
,
user
)
if
(
user
)
{
// update user
user
.
username
=
username
.
toLowerCase
();
user
.
name
=
name
;
user
.
avatar_url
=
avatar_url
;
user
.
bio
=
bio
;
user
.
company
=
company
;
user
.
location
=
location
;
user
.
created_at
=
created_at
;
user
.
git_level
=
git_level
;
user
.
git_score
=
git_score
;
user
.
git_badge
=
git_badge
;
user
.
git_points
=
git_points
;
user
.
total_prs
=
total_prs
;
user
.
total_issues
=
total_issues
;
user
.
total_stars
=
total_stars
;
user
.
total_commits
=
total_commits
;
user
.
contributed_to
=
contributed_to
;
user
.
latestUpdate
=
Date
.
now
();
await
user
.
save
();
return
res
.
status
(
202
).
json
({
msg
:
"
user has been updated successfully!
"
,
});
}
else
{
console
.
log
(
'
You have taken the wrong route to create the user
'
);
return
res
.
status
(
201
).
json
({
msg
:
"
You have taken the wrong route to create the user
"
,
});
}
}
catch
(
err
)
{
return
res
.
status
(
500
).
send
(
"
Server issue:
"
+
err
);
}
};
// deprecated (only for dev purposes)
const
getUserInfo
=
async
(
req
,
res
,
next
)
=>
{
const
url
=
"
https://api.github.com/users/dasunx
"
;
const
response
=
await
axios
.
get
(
url
);
...
...
@@ -57,41 +196,9 @@ const getUserInfo = async (req, res, next) => {
}
};
const
saveUserGitInfo
=
async
(
req
,
res
,
next
)
=>
{
const
{
name
,
username
,
avatar_url
,
level
,
score
}
=
req
.
body
;
console
.
log
(
'
retrived Data set
'
,
req
.
body
)
try
{
let
user
=
await
User
.
findOne
({
username
});
if
(
user
)
{
// update user instead
user
.
username
=
username
;
user
.
name
=
name
;
user
.
avatar_url
=
avatar_url
,
user
.
level
=
level
,
user
.
score
=
score
,
user
.
latestUpdate
=
Date
.
now
()
await
user
.
save
();
return
res
.
status
(
202
).
json
({
msg
:
"
user has been updated successfully!
"
})
}
else
{
const
newUser
=
new
User
({
username
,
name
,
avatar_url
,
level
,
score
,
latestUpdate
:
Date
.
now
()
});
await
newUser
.
save
();
return
res
.
status
(
201
).
json
({
msg
:
"
user has been created successfully!
"
})
}
}
catch
(
err
)
{
return
res
.
status
(
500
).
send
(
"
Server issue:
"
+
err
);
}
};
exports
.
getUserInfo
=
getUserInfo
;
exports
.
saveUserGitInfo
=
saveUserGitInfo
;
exports
.
checkUserAvailabity
=
checkUserAvailabity
;
exports
.
createUser
=
createUser
;
exports
.
getAllUserNames
=
getAllUserNames
;
exports
.
sortedLeaderboardUsers
=
sortedLeaderboardUsers
;
\ No newline at end of file
portfolio-backend/models/user.js
View file @
b1063c95
...
...
@@ -4,19 +4,21 @@ const Schema=mongoose.Schema;
const
userSchema
=
new
Schema
({
username
:{
type
:
String
,
required
:
true
,
unique
:
true
},
name
:{
type
:
String
,
required
:
true
},
name
:{
type
:
String
},
avatar_url
:{
type
:
String
},
location
:{
type
:
String
},
level
:{
type
:
String
},
score
:{
type
:
Number
},
blog
:{
type
:
String
},
bio
:{
type
:
String
},
total_star_received
:{
type
:
Number
},
total_public_repos
:{
type
:
Number
},
company
:{
type
:
String
},
location
:{
type
:
String
},
created_at
:{
type
:
String
},
git_level
:{
type
:
Number
},
git_score
:{
type
:
Number
},
git_badge
:{
type
:
String
},
git_points
:{
type
:
Number
},
total_prs
:{
type
:
Number
},
total_commits
:{
type
:
Number
},
total_issues
:{
type
:
Number
},
total_stars
:{
type
:
Number
},
contributed_to
:{
type
:
Number
},
git_rank
:{
type
:
String
},
git_score
:{
type
:
Number
},
latestUpdate
:{
type
:
Date
}
})
userSchema
.
plugin
(
uniqueValidator
);
...
...
portfolio-backend/routes/user-routes.js
View file @
b1063c95
const
express
=
require
(
'
express
'
);
const
{
getUserInfo
,
saveUserGitInfo
}
=
require
(
'
../controllers/user-controller
'
);
const
{
getUserInfo
,
saveUserGitInfo
,
checkUserAvailabity
,
createUser
,
getAllUserNames
,
sortedLeaderboardUsers
}
=
require
(
'
../controllers/user-controller
'
);
const
router
=
express
.
Router
();
router
.
get
(
'
/get-all-usernames
'
,
getAllUserNames
);
router
.
get
(
'
/get-info
'
,
getUserInfo
);
router
.
get
(
'
/check-availability/:username
'
,
checkUserAvailabity
);
router
.
get
(
'
/getSortedUsers
'
,
sortedLeaderboardUsers
)
router
.
post
(
'
/create/:username
'
,
createUser
);
router
.
post
(
'
/save-git-info
'
,
saveUserGitInfo
);
module
.
exports
=
router
;
\ No newline at end of file
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