diff options
Diffstat (limited to 'pysite/views/api/bot/user.py')
-rw-r--r-- | pysite/views/api/bot/user.py | 48 |
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) |