aboutsummaryrefslogtreecommitdiffstats
path: root/pysite/views/api/bot/user.py
diff options
context:
space:
mode:
Diffstat (limited to 'pysite/views/api/bot/user.py')
-rw-r--r--pysite/views/api/bot/user.py48
1 files changed, 21 insertions, 27 deletions
diff --git a/pysite/views/api/bot/user.py b/pysite/views/api/bot/user.py
index aad58e05..8c2d8149 100644
--- a/pysite/views/api/bot/user.py
+++ b/pysite/views/api/bot/user.py
@@ -1,10 +1,20 @@
# coding=utf-8
-from flask import jsonify, request
+from flask import jsonify
+
+from schema import Schema
from pysite.base_route import APIView, DBViewMixin
-from pysite.constants import ErrorCodes
-from pysite.decorators import valid_api_key
+from pysite.constants import ValidationTypes
+from pysite.decorators import api_key, api_params
+
+
+SCHEMA = Schema([
+ {
+ "user_id": int,
+ "role": int
+ }
+])
REQUIRED_KEYS = [
"user_id",
@@ -18,28 +28,12 @@ class UserView(APIView, DBViewMixin):
table_name = "users"
table_primary_key = "user_id"
- @valid_api_key
- def post(self):
- data = request.get_json()
-
- if not isinstance(data, list):
- data = [data]
-
- for user in data:
- if not all(k in user for k in REQUIRED_KEYS):
- print(user)
- return self.error(ErrorCodes.missing_parameters)
-
- self.db.insert(
- self.table_name,
- {
- "user_id": user["user_id"],
- "role": user["role"],
- },
- conflict="update",
- durability="soft"
- )
-
- self.db.sync(self.table_name)
+ @api_key
+ @api_params(schema=SCHEMA, validation_type=ValidationTypes.json)
+ def post(self, data):
+ changes = self.db.insert(
+ self.table_name, *data,
+ conflict="update"
+ )
- return jsonify({"success": True})
+ return jsonify(changes)