Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
C
cbdiscord
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
Geovanny E. Vera Pazmino
cbdiscord
Commits
52c6cc60
Commit
52c6cc60
authored
Jun 02, 2020
by
Geovanny
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refactored house routing
parent
3045fac3
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
633 additions
and
445 deletions
+633
-445
manager.py
discord/house/membership/manager.py
+5
-5
manager.py
discord/house/war/manager.py
+2
-2
model.js
server/house/member/model.js
+25
-0
route.js
server/house/member/route.js
+55
-0
model.js
server/house/membership/model.js
+83
-0
model.js
server/house/membership/request/model.js
+53
-0
route.js
server/house/membership/request/route.js
+84
-0
route.js
server/house/membership/route.js
+148
-0
model.js
server/house/model.js
+0
-170
route.js
server/house/route.js
+10
-253
model.js
server/house/war/model.js
+29
-0
model.js
server/house/war/participation/model.js
+41
-0
route.js
server/house/war/participation/route.js
+44
-0
route.js
server/house/war/route.js
+39
-0
sync.js
web/houses/sync.js
+1
-1
sync.js
web/myhouse/sync.js
+14
-14
No files found.
discord/house/membership/manager.py
View file @
52c6cc60
...
...
@@ -16,7 +16,7 @@ class MembershipManager(commands.Cog):
"""Send member request to house id"""
try
:
session
=
await
self
.
bot
.
getUserSession
(
ctx
.
message
.
author
)
await
Api
.
postSession
(
'/house/request'
,
{
"house_id"
:
house_id
},
session
)
await
Api
.
postSession
(
'/house/
membership/
request'
,
{
"house_id"
:
house_id
},
session
)
await
ctx
.
send
(
'Request sent'
);
except
ApiError
as
error
:
await
ctx
.
send
(
error
.
message
)
...
...
@@ -26,7 +26,7 @@ class MembershipManager(commands.Cog):
"""Cancel member request"""
try
:
session
=
await
self
.
bot
.
getUserSession
(
ctx
.
message
.
author
)
await
Api
.
deleteSession
(
'/house/request'
,
session
)
await
Api
.
deleteSession
(
'/house/
membership/
request'
,
session
)
await
ctx
.
send
(
'Request cancelled'
);
except
ApiError
as
error
:
await
ctx
.
send
(
error
.
message
)
...
...
@@ -36,7 +36,7 @@ class MembershipManager(commands.Cog):
"""All requests to house"""
try
:
session
=
await
self
.
bot
.
getUserSession
(
ctx
.
message
.
author
)
data
=
await
Api
.
getSession
(
'/house/
requests
'
,
session
)
data
=
await
Api
.
getSession
(
'/house/
membership/request/all
'
,
session
)
if
(
len
(
data
)
==
0
):
await
ctx
.
send
(
'No requests'
)
else
:
...
...
@@ -63,7 +63,7 @@ class MembershipManager(commands.Cog):
"""Accept membership request"""
try
:
session
=
await
self
.
bot
.
getUserSession
(
ctx
.
message
.
author
)
data
=
await
Api
.
postSession
(
'/house/
accept-request
'
,{
"user_id"
:
user_id
}
,
session
)
data
=
await
Api
.
postSession
(
'/house/
membership
'
,{
"user_id"
:
user_id
}
,
session
)
await
ctx
.
send
(
'Membership accepted'
)
except
ApiError
as
error
:
...
...
@@ -74,7 +74,7 @@ class MembershipManager(commands.Cog):
"""Refuse membership request"""
try
:
session
=
await
self
.
bot
.
getUserSession
(
ctx
.
message
.
author
)
data
=
await
Api
.
deleteSession
(
'/house/
reject-
request/{0}'
.
format
(
user_id
),
session
)
data
=
await
Api
.
deleteSession
(
'/house/
membership/
request/{0}'
.
format
(
user_id
),
session
)
await
ctx
.
send
(
'Membership rejected'
)
except
ApiError
as
error
:
...
...
discord/house/war/manager.py
View file @
52c6cc60
...
...
@@ -18,7 +18,7 @@ class WarManager(commands.Cog):
async
def
currentWar
(
self
,
ctx
):
"""Get current war information"""
try
:
data
=
await
Api
.
get
(
'/house/
current-
war'
);
data
=
await
Api
.
get
(
'/house/war'
);
date
=
parser
.
parse
(
data
.
get
(
'day'
))
await
ctx
.
send
(
'Current War Date: {0}/{1}/{2}'
.
format
(
date
.
year
,
date
.
month
,
date
.
day
))
except
ApiError
as
error
:
...
...
@@ -27,7 +27,7 @@ class WarManager(commands.Cog):
async
def
warParticipation
(
self
,
ctx
,
decision
):
try
:
session
=
await
self
.
bot
.
getUserSession
(
ctx
.
message
.
author
)
await
Api
.
postSession
(
'/house/participation'
,
{
"decision"
:
decision
},
session
)
await
Api
.
postSession
(
'/house/
war/
participation'
,
{
"decision"
:
decision
},
session
)
await
ctx
.
send
(
'Participation updated'
)
except
ApiError
as
error
:
await
ctx
.
send
(
error
.
message
)
...
...
server/house/member/model.js
0 → 100644
View file @
52c6cc60
const
db
=
require
(
'../../database/database'
);
const
model
=
{};
model
.
getMembers
=
async
(
house_id
)
=>
{
const
sql_text
=
`SELECT u.id, u.username, u.leadership, hr.lk_name as house_role, hr.lk_key
FROM users as u
LEFT JOIN house_role_lk as hr ON hr.lk_key = u.lk_house_role
WHERE u.house_id = ?;`
;
const
data
=
await
db
.
pool
.
query
(
sql_text
,
[
house_id
]);
return
data
;
}
model
.
getMemberUnits
=
async
(
member_id
)
=>
{
const
sql_text
=
`SELECT u.*, uu.unit_level, uu.elite_flg
FROM users as us
LEFT JOIN users_units as uu ON us.id = uu.user_id
LEFT JOIN units as u ON uu.unit_id = u.id
WHERE us.id = ? ORDER BY u.name ASC;`
const
data
=
await
db
.
pool
.
query
(
sql_text
,
[
member_id
]);
return
data
;
}
module
.
exports
=
model
;
\ No newline at end of file
server/house/member/route.js
0 → 100644
View file @
52c6cc60
const
Router
=
require
(
'@koa/router'
);
const
router
=
new
Router
();
const
memberModel
=
require
(
'./model'
);
// DELETE
const
HOUSE_ROLES
=
{
lg
:
0
,
sen
:
1
,
mar
:
2
,
nob
:
3
,
tre
:
4
,
kng
:
5
}
function
hasHouseNoThrow
(
context
){
return
context
.
user
.
house_id
;
}
function
checkPermissions
(
context
,
ROLE
){
if
(
!
hasHouseNoThrow
(
context
)
||
ROLE
<
context
.
user
.
lk_permission_level
){
context
.
throw
(
403
,
"No Permissions"
)
}
}
function
hasHouse
(
context
){
if
(
!
context
.
user
.
house_id
){
context
.
throw
(
400
,
'No house'
);
}
}
// END DELETE
router
.
get
(
'/all'
,
async
(
context
,
next
)
=>
{
hasHouse
(
context
);
try
{
const
data
=
await
memberModel
.
getMembers
(
context
.
user
.
house_id
);
context
.
response
.
status
=
200
;
context
.
response
.
body
=
data
;
}
catch
(
error
){
console
.
log
(
error
);
context
.
throw
(
400
,
"Failed to get members"
)
}
});
router
.
get
(
'/:member_id/units'
,
async
(
context
,
next
)
=>
{
checkPermissions
(
context
,
HOUSE_ROLES
.
sen
);
try
{
const
data
=
await
memberModel
.
getMemberUnits
(
context
.
params
.
member_id
);
context
.
response
.
status
=
200
;
context
.
response
.
body
=
data
;
}
catch
(
error
){
console
.
log
(
error
);
context
.
throw
(
'Failed to get Member Units'
);
}
});
module
.
exports
=
router
;
\ No newline at end of file
server/house/membership/model.js
0 → 100644
View file @
52c6cc60
const
db
=
require
(
'../../database/database'
);
const
model
=
{};
async
function
checkHouseRequest
(
house_id
,
user_id
){
const
sql_exists
=
'SELECT EXISTS(SELECT * FROM house_requests WHERE house_id = ? AND user_id = ?) as result;'
const
exists
=
await
db
.
pool
.
query
(
sql_exists
,
[
house_id
,
user_id
]);
if
(
exists
[
0
]
&&
exists
[
0
].
result
===
0
){
throw
Error
(
"Membership request not send for user's house"
)
}
}
model
.
acceptRequest
=
async
(
user_id
,
house_id
)
=>
{
checkHouseRequest
(
house_id
,
user_id
);
const
sql_text
=
'DELETE FROM house_requests WHERE user_id = ?;'
;
const
sql_text2
=
'UPDATE users SET house_id = ?, lk_house_role =
\'
kng
\'
WHERE id = ?;'
;
let
con
=
await
db
.
pool
.
getConnection
();
await
con
.
query
(
'START TRANSACTION;'
);
await
con
.
query
(
sql_text
,
[
user_id
]);
await
con
.
query
(
sql_text2
,
[
house_id
,
user_id
]);
await
con
.
query
(
'COMMIT;'
);
await
con
.
release
();
}
model
.
changeHouseLiege
=
async
(
liege_id
,
member_id
)
=>
{
const
sql_text
=
`UPDATE users SET lk_house_role = 'kng' WHERE id = ?;`
;
const
sql_text2
=
`UPDATE users SET lk_house_role = 'lg' WHERE id = ?;`
;
let
con
=
await
db
.
pool
.
getConnection
();
await
con
.
query
(
'START TRANSACTION;'
)
await
con
.
query
(
sql_text
,
[
liege_id
]);
await
con
.
query
(
sql_text2
,
[
member_id
]);
await
con
.
query
(
'COMMIT;'
);
await
con
.
release
();
}
model
.
modifyMemberRole
=
async
(
member_id
,
role
)
=>
{
const
sql_text
=
'UPDATE users SET lk_house_role = ? WHERE id = ?;'
;
await
db
.
pool
.
query
(
sql_text
,
[
role
,
member_id
]);
}
// DELETE AFTER CHANGING MODEL
model
.
deleteHouse
=
async
(
house_id
)
=>
{
const
sql_text
=
'UPDATE users SET lk_house_role = NULL where house_id = ?'
;
const
sql_text2
=
'DELETE FROM houses WHERE id = ?;'
;
let
con
=
await
db
.
pool
.
getConnection
();
await
con
.
query
(
'START TRANSACTION;'
);
await
con
.
query
(
sql_text
,
[
house_id
]);
await
con
.
query
(
sql_text2
,
[
house_id
]);
await
con
.
query
(
'COMMIT;'
);
await
con
.
release
();
}
model
.
leaveHouse
=
async
(
user_id
)
=>
{
const
sql_text
=
'UPDATE users SET house_id = NULL, lk_house_role = NULL WHERE id = ?;'
;
await
db
.
pool
.
query
(
sql_text
,
[
user_id
]);
}
model
.
deleteMember
=
async
(
user_id
)
=>
{
const
sql_text
=
'UPDATE users SET house_id = NULL, lk_house_role = NULL WHERE id = ? AND lk_house_role !=
\'
lg
\'
;'
;
await
db
.
pool
.
query
(
sql_text
,
[
user_id
]);
}
module
.
exports
=
model
;
\ No newline at end of file
server/house/membership/request/model.js
0 → 100644
View file @
52c6cc60
const
db
=
require
(
'../../../database/database'
);
const
model
=
{};
async
function
checkHouseRequest
(
house_id
,
user_id
){
const
sql_exists
=
'SELECT EXISTS(SELECT * FROM house_requests WHERE house_id = ? AND user_id = ?) as result;'
const
exists
=
await
db
.
pool
.
query
(
sql_exists
,
[
house_id
,
user_id
]);
if
(
exists
[
0
]
&&
exists
[
0
].
result
===
0
){
throw
Error
(
"Membership request not send for user's house"
)
}
}
model
.
getHouseRequests
=
async
(
house_id
)
=>
{
const
sql_text
=
`SELECT u.id, u.username
FROM house_requests as hr
LEFT JOIN users as u ON u.id = hr.user_id
WHERE hr.house_id = ?;`
const
data
=
await
db
.
pool
.
query
(
sql_text
,
[
house_id
]);
return
data
;
}
model
.
sendRequest
=
async
(
house_id
,
user_id
)
=>
{
const
sql_text
=
'DELETE FROM house_requests WHERE user_id = ?'
;
const
sql_text2
=
'INSERT INTO house_requests (house_id, user_id) VALUES (?, ?)'
;
let
con
=
await
db
.
pool
.
getConnection
();
await
con
.
query
(
'START TRANSACTION;'
);
await
con
.
query
(
sql_text
,
[
user_id
]);
await
con
.
query
(
sql_text2
,
[
house_id
,
user_id
]);
await
con
.
query
(
'COMMIT;'
);
await
con
.
release
();
};
model
.
cancelRequests
=
async
(
user_id
)
=>
{
const
sql_text
=
'DELETE FROM house_requests WHERE user_id = ?'
;
await
db
.
pool
.
query
(
sql_text
,
[
user_id
]);
}
model
.
rejectRequest
=
async
(
user_id
,
house_id
)
=>
{
checkHouseRequest
(
house_id
,
user_id
);
const
sql_text
=
'DELETE FROM house_requests WHERE user_id = ?;'
;
await
db
.
pool
.
query
(
sql_text
,
[
user_id
]);
}
module
.
exports
=
model
;
\ No newline at end of file
server/house/membership/request/route.js
0 → 100644
View file @
52c6cc60
const
Router
=
require
(
'@koa/router'
);
const
router
=
new
Router
();
const
requestModel
=
require
(
'./model'
);
// DELETE START
const
HOUSE_ROLES
=
{
lg
:
0
,
sen
:
1
,
mar
:
2
,
nob
:
3
,
tre
:
4
,
kng
:
5
}
function
checkPermissions
(
context
,
ROLE
){
if
(
!
hasHouseNoThrow
(
context
)
||
ROLE
<
context
.
user
.
lk_permission_level
){
context
.
throw
(
403
,
"No Permissions"
)
}
}
function
hasHouseNoThrow
(
context
){
return
context
.
user
.
house_id
;
}
// DELETE END
router
.
get
(
'/all'
,
async
(
context
,
next
)
=>
{
checkPermissions
(
context
,
HOUSE_ROLES
.
sen
);
try
{
const
data
=
await
requestModel
.
getHouseRequests
(
context
.
user
.
house_id
);
context
.
response
.
status
=
200
;
context
.
response
.
body
=
data
;
}
catch
(
error
){
console
.
log
(
error
);
context
.
throw
(
400
,
'Unable to get requests'
);
}
});
router
.
post
(
'/'
,
async
(
context
,
next
)
=>
{
if
(
context
.
user
.
house_id
){
context
.
throw
(
400
,
'Already in a house'
)
}
try
{
const
body
=
context
.
request
.
body
;
if
(
!
body
||
!
body
.
house_id
){
throw
Error
(
'No house ID'
);
}
await
requestModel
.
sendRequest
(
body
.
house_id
,
context
.
session
.
user_id
);
context
.
response
.
status
=
204
;
}
catch
(
error
){
console
.
log
(
error
);
context
.
throw
(
400
,
'Failed to send request'
);
}
});
router
.
delete
(
'/'
,
async
(
context
,
next
)
=>
{
if
(
context
.
user
.
house_id
){
context
.
throw
(
400
,
'Already in a house'
)
}
try
{
await
requestModel
.
cancelRequests
(
context
.
session
.
user_id
);
context
.
response
.
status
=
204
;
}
catch
(
error
){
console
.
log
(
error
);
context
.
throw
(
400
,
'Failed to send request'
);
}
});
router
.
delete
(
'/:user_id'
,
async
(
context
,
next
)
=>
{
checkPermissions
(
context
,
HOUSE_ROLES
.
sen
);
try
{
const
body
=
context
.
request
.
body
;
if
(
!
context
.
params
.
user_id
){
throw
Error
(
"No user to refuse"
);
}
await
requestModel
.
rejectRequest
(
context
.
params
.
user_id
,
context
.
user
.
house_id
);
context
.
response
.
status
=
204
;
}
catch
(
error
){
console
.
log
(
error
);
context
.
throw
(
400
,
'Unable to reject Request'
)
}
});
module
.
exports
=
router
;
\ No newline at end of file
server/house/membership/route.js
0 → 100644
View file @
52c6cc60
const
Router
=
require
(
'@koa/router'
);
const
router
=
new
Router
();
const
membershipModel
=
require
(
'./model'
);
const
userModel
=
require
(
'../../user/model'
);
const
requestRouter
=
require
(
'./request/route'
);
router
.
use
(
'/request'
,
requestRouter
.
routes
(),
requestRouter
.
allowedMethods
());
// DELETE START
const
HOUSE_ROLES
=
{
lg
:
0
,
sen
:
1
,
mar
:
2
,
nob
:
3
,
tre
:
4
,
kng
:
5
}
function
checkPermissions
(
context
,
ROLE
){
if
(
!
hasHouseNoThrow
(
context
)
||
ROLE
<
context
.
user
.
lk_permission_level
){
context
.
throw
(
403
,
"No Permissions"
)
}
}
function
hasHouseNoThrow
(
context
){
return
context
.
user
.
house_id
;
}
function
hasHouse
(
context
){
if
(
!
context
.
user
.
house_id
){
context
.
throw
(
400
,
'No house'
);
}
}
function
checkPermissionsNoThrow
(
context
,
ROLE
){
return
ROLE
>=
context
.
user
.
lk_permission_level
;
}
// DELETE END
router
.
get
(
'/permissions'
,
async
(
context
,
next
)
=>
{
if
(
!
context
.
user
.
house_id
||
context
.
user
.
lk_permission_level
===
undefined
){
context
.
throw
(
400
,
'No house'
);
}
try
{
context
.
response
.
status
=
200
;
context
.
response
.
body
=
context
.
user
.
lk_permission_level
;
}
catch
(
error
){
console
.
log
(
error
);
context
.
throw
(
400
,
'ERROR'
);
}
});
router
.
post
(
'/'
,
async
(
context
,
next
)
=>
{
checkPermissions
(
context
,
HOUSE_ROLES
.
sen
);
try
{
const
body
=
context
.
request
.
body
;
if
(
!
body
||
!
body
.
user_id
){
throw
Error
(
'No user to accept'
);
}
await
membershipModel
.
acceptRequest
(
body
.
user_id
,
context
.
user
.
house_id
);
context
.
response
.
status
=
204
;
}
catch
(
error
){
console
.
log
(
error
);
context
.
throw
(
400
,
'Unable to Accept Request'
)
}
});
router
.
put
(
'/:member_id'
,
async
(
context
,
next
)
=>
{
hasHouse
(
context
);
const
body
=
context
.
request
.
body
;
if
(
!
body
||
!
body
.
role
){
context
.
throw
(
400
,
'Missing parameters'
)
}
try
{
const
member
=
await
userModel
.
getUserFullFromId
(
context
.
params
.
member_id
);
if
(
!
member
){
throw
Error
(
'Member does not exists'
);
}
if
(
member
.
house_id
!==
context
.
user
.
house_id
){
throw
Error
(
'Not on the same house'
);
}
if
(
member
.
lk_permission_level
<=
context
.
user
.
lk_permission_level
){
throw
Error
(
'Member permission level is high'
)
}
if
(
checkPermissionsNoThrow
(
context
,
HOUSE_ROLES
.
lg
)){
if
(
body
.
role
===
'lg'
){
await
membershipModel
.
changeHouseLiege
(
context
.
user
.
id
,
member
.
id
);
}
else
{
await
membershipModel
.
modifyMemberRole
(
member
.
id
,
body
.
role
);
}
}
else
{
if
(
context
.
user
.
lk_house_role
<
HOUSE_ROLES
[
body
.
role
]){
await
membershipModel
.
modifyMemberRole
(
member
.
id
,
body
.
role
);
}
else
{
throw
Error
(
'Cannot modify to the same level'
);
}
}
context
.
response
.
status
=
204
;
}
catch
(
error
){
console
.
log
(
error
);
context
.
throw
(
400
,
'Failed to modify role'
)
}
});
router
.
delete
(
'/'
,
async
(
context
,
next
)
=>
{
if
(
context
.
user
.
lk_house_role
===
'lg'
){
try
{
await
membershipModel
.
deleteHouse
(
context
.
user
.
house_id
,
context
.
session
.
user_id
);
context
.
response
.
status
=
204
;
}
catch
(
error
){
console
.
log
(
error
);
context
.
throw
(
400
,
'Unable to Delete House'
);
}
}
else
{
try
{
await
membershipModel
.
leaveHouse
(
context
.
session
.
user_id
);
context
.
response
.
status
=
204
;
}
catch
(
error
){
console
.
log
(
error
);
context
.
throw
(
400
,
'Unable to Leave'
);
}
}
});
router
.
delete
(
'/:user_id'
,
async
(
context
,
next
)
=>
{
checkPermissions
(
context
,
HOUSE_ROLES
.
sen
);
if
(
context
.
params
.
user_id
===
context
.
session
.
user_id
){
context
.
throw
(
400
,
"Can't delete yourself"
);
}
try
{
const
member
=
await
userModel
.
getUserFullFromId
(
context
.
params
.
user_id
);
if
(
!
member
){
throw
Error
(
'Member does not exists'
);
}
if
(
member
.
house_id
!==
context
.
user
.
house_id
){
throw
Error
(
'Not on the same house'
);
}
if
(
member
.
lk_permission_level
<=
context
.
user
.
lk_permission_level
){
throw
Error
(
"Member permission level is high"
)
}
await
membershipModel
.
deleteMember
(
context
.
params
.
user_id
);
context
.
response
.
status
=
204
;
}
catch
(
error
){
console
.
log
(
error
);
context
.
throw
(
400
,
'Unable to Delete Member'
)
}
});
module
.
exports
=
router
;
\ No newline at end of file
server/house/model.js
View file @
52c6cc60
...
...
@@ -4,14 +4,6 @@ const model = {};
const
h_columns
=
[
'house_name'
,
'house_level'
,
'camp_location'
];
async
function
checkHouseRequest
(
house_id
,
user_id
){
const
sql_exists
=
'SELECT EXISTS(SELECT * FROM house_requests WHERE house_id = ? AND user_id = ?) as result;'
const
exists
=
await
db
.
pool
.
query
(
sql_exists
,
[
house_id
,
user_id
]);
if
(
exists
[
0
]
&&
exists
[
0
].
result
===
0
){
throw
Error
(
"Membership request not send for user's house"
)
}
}
model
.
getAll
=
async
()
=>
{
const
sql_text
=
`SELECT h.*, u.username as liege_username
FROM houses as h
...
...
@@ -103,166 +95,4 @@ model.deleteHouse = async(house_id) => {
await
con
.
release
();
}
model
.
sendRequest
=
async
(
house_id
,
user_id
)
=>
{
const
sql_text
=
'DELETE FROM house_requests WHERE user_id = ?'
;
const
sql_text2
=
'INSERT INTO house_requests (house_id, user_id) VALUES (?, ?)'
;
let
con
=
await
db
.
pool
.
getConnection
();
await
con
.
query
(
'START TRANSACTION;'
);
await
con
.
query
(
sql_text
,
[
user_id
]);
await
con
.
query
(
sql_text2
,
[
house_id
,
user_id
]);
await
con
.
query
(
'COMMIT;'
);
await
con
.
release
();
};
model
.
cancelRequests
=
async
(
user_id
)
=>
{
const
sql_text
=
'DELETE FROM house_requests WHERE user_id = ?'
;
await
db
.
pool
.
query
(
sql_text
,
[
user_id
]);
}
model
.
getHouseRequests
=
async
(
house_id
)
=>
{
const
sql_text
=
`SELECT u.id, u.username
FROM house_requests as hr
LEFT JOIN users as u ON u.id = hr.user_id
WHERE hr.house_id = ?;`
const
data
=
await
db
.
pool
.
query
(
sql_text
,
[
house_id
]);
return
data
;
}
model
.
acceptRequest
=
async
(
user_id
,
house_id
)
=>
{
checkHouseRequest
(
house_id
,
user_id
);
const
sql_text
=
'DELETE FROM house_requests WHERE user_id = ?;'
;
const
sql_text2
=
'UPDATE users SET house_id = ?, lk_house_role =
\'
kng
\'
WHERE id = ?;'
;
let
con
=
await
db
.
pool
.
getConnection
();
await
con
.
query
(
'START TRANSACTION;'
);
await
con
.
query
(
sql_text
,
[
user_id
]);
await
con
.
query
(
sql_text2
,
[
house_id
,
user_id
]);
await
con
.
query
(
'COMMIT;'
);
await
con
.
release
();
}
model
.
rejectRequest
=
async
(
user_id
,
house_id
)
=>
{
checkHouseRequest
(
house_id
,
user_id
);
const
sql_text
=
'DELETE FROM house_requests WHERE user_id = ?;'
;
await
db
.
pool
.
query
(
sql_text
,
[
user_id
]);
}
model
.
deleteMember
=
async
(
user_id
)
=>
{
const
sql_text
=
'UPDATE users SET house_id = NULL, lk_house_role = NULL WHERE id = ? AND lk_house_role !=
\'
lg
\'
;'
;
await
db
.
pool
.
query
(
sql_text
,
[
user_id
]);
}
model
.
leaveHouse
=
async
(
user_id
)
=>
{
const
sql_text
=
'UPDATE users SET house_id = NULL, lk_house_role = NULL WHERE id = ?;'
;
await
db
.
pool
.
query
(
sql_text
,
[
user_id
]);
}
model
.
getMembers
=
async
(
house_id
)
=>
{
const
sql_text
=
`SELECT u.id, u.username, u.leadership, hr.lk_name as house_role, hr.lk_key
FROM users as u
LEFT JOIN house_role_lk as hr ON hr.lk_key = u.lk_house_role
WHERE u.house_id = ?;`
;
const
data
=
await
db
.
pool
.
query
(
sql_text
,
[
house_id
]);
return
data
;
}
model
.
modifyMemberRole
=
async
(
member_id
,
role
)
=>
{
const
sql_text
=
'UPDATE users SET lk_house_role = ? WHERE id = ?;'
;
await
db
.
pool
.
query
(
sql_text
,
[
role
,
member_id
]);
}
model
.
changeHouseLiege
=
async
(
liege_id
,
member_id
)
=>
{
const
sql_text
=
`UPDATE users SET lk_house_role = 'kng' WHERE id = ?;`
;
const
sql_text2
=
`UPDATE users SET lk_house_role = 'lg' WHERE id = ?;`
;
let
con
=
await
db
.
pool
.
getConnection
();
await
con
.
query
(
'START TRANSACTION;'
)
await
con
.
query
(
sql_text
,
[
liege_id
]);
await
con
.
query
(
sql_text2
,
[
member_id
]);
await
con
.
query
(
'COMMIT;'
);
await
con
.
release
();
}
model
.
getMemberUnits
=
async
(
member_id
)
=>
{
const
sql_text
=
`SELECT u.*, uu.unit_level, uu.elite_flg
FROM users as us
LEFT JOIN users_units as uu ON us.id = uu.user_id
LEFT JOIN units as u ON uu.unit_id = u.id
WHERE us.id = ? ORDER BY u.name ASC;`
const
data
=
await
db
.
pool
.
query
(
sql_text
,
[
member_id
]);
return
data
;
}
model
.
getCurrentWar
=
async
()
=>
{
const
sql_text
=
'SELECT * FROM war_days WHERE completed = 0 LIMIT 1;'
const
data
=
await
db
.
pool
.
query
(
sql_text
);
return
data
[
0
];
}
model
.
insertNewWar
=
async
()
=>
{
const
sql_text
=
'UPDATE war_days SET completed = 1;'
;
const
sql_text2
=
'INSERT INTO war_days (day) VALUES (CURDATE());'
let
con
=
await
db
.
pool
.
getConnection
()
await
con
.
query
(
'START TRANSACTION;'
);
await
con
.
query
(
sql_text
);
await
con
.
query
(
sql_text2
);
await
con
.
query
(
'COMMIT;'
);
await
con
.
release
();
}
model
.
warParticipation
=
async
(
user_id
,
house_id
,
decision
)
=>
{
const
sql_text
=
'SELECT @current_war_id:=id FROM war_days WHERE completed = 0 LIMIT 1;'
;
const
sql_text2
=
`INSERT INTO users_war (user_id, war_id, house_id, decision) VALUES (?, @current_war_id, ?, ?)
ON DUPLICATE KEY UPDATE decision = ?`
;
let
con
=
await
db
.
pool
.
getConnection
();
await
con
.
query
(
'START TRANSACTION;'
);
await
con
.
query
(
sql_text
);
await
con
.
query
(
sql_text2
,
[
user_id
,
house_id
,
decision
,
decision
]);
await
con
.
query
(
'COMMIT;'
);
await
con
.
release
();
}
model
.
getParticipation
=
async
(
house_id
)
=>
{
const
sql_text
=
`SELECT u.username, uw.decision
FROM users as u
LEFT JOIN users_war as uw ON uw.user_id = u.id
LEFT JOIN war_days as w ON w.id = uw.war_id
WHERE uw.house_id = ? AND w.completed = 0;`
;
const
data
=
await
db
.
pool
.
query
(
sql_text
,
[
house_id
]);
return
data
;
}
module
.
exports
=
model
;
\ No newline at end of file
server/house/route.js
View file @
52c6cc60
const
Koa
=
require
(
'koa'
);
const
Router
=
require
(
'@koa/router'
);
const
CronJob
=
require
(
'cron'
).
CronJob
;
const
router
=
new
Router
();