init
This commit is contained in:
@@ -1,6 +1,13 @@
|
||||
from flask import Flask
|
||||
from routers.key import key_bp
|
||||
|
||||
|
||||
def app_factory() -> Flask:
|
||||
app = Flask(__name__)
|
||||
app.register_blueprint(key_bp)
|
||||
return app
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = app_factory()
|
||||
app.run(debug=True)
|
||||
|
0
flask_demo_api/protocols/__init__.py
Normal file
0
flask_demo_api/protocols/__init__.py
Normal file
7
flask_demo_api/protocols/models.py
Normal file
7
flask_demo_api/protocols/models.py
Normal file
@@ -0,0 +1,7 @@
|
||||
from dataclasses import dataclass
|
||||
|
||||
|
||||
@dataclass()
|
||||
class KeyDTO:
|
||||
key: str
|
||||
val: str
|
18
flask_demo_api/protocols/repository.py
Normal file
18
flask_demo_api/protocols/repository.py
Normal file
@@ -0,0 +1,18 @@
|
||||
from abc import abstractmethod
|
||||
from typing import Protocol
|
||||
|
||||
from flask_demo_api.protocols.models import KeyDTO
|
||||
|
||||
|
||||
class Repository(Protocol):
|
||||
@abstractmethod
|
||||
def get_key(self, obj: KeyDTO) -> KeyDTO | None:
|
||||
raise NotImplementedError
|
||||
|
||||
@abstractmethod
|
||||
def add_key(self, obj: KeyDTO) -> KeyDTO:
|
||||
raise NotImplementedError
|
||||
|
||||
@abstractmethod
|
||||
def put_key(self, obj: KeyDTO) -> KeyDTO:
|
||||
raise NotImplementedError
|
0
flask_demo_api/repository/__init__.py
Normal file
0
flask_demo_api/repository/__init__.py
Normal file
22
flask_demo_api/repository/redis.py
Normal file
22
flask_demo_api/repository/redis.py
Normal file
@@ -0,0 +1,22 @@
|
||||
import redis
|
||||
|
||||
from flask_demo_api.protocols.models import KeyDTO
|
||||
from flask_demo_api.protocols.repository import Repository
|
||||
|
||||
|
||||
class RedisRepository(Repository):
|
||||
def __init__(self, redis_pool: redis.Redis) -> None:
|
||||
self.pool = redis_pool
|
||||
|
||||
def get_key(self, obj: KeyDTO) -> KeyDTO | None:
|
||||
data = self.pool.get(obj.key)
|
||||
if not data:
|
||||
return None
|
||||
return KeyDTO(key=obj.key, val=str(data))
|
||||
|
||||
def add_key(self, obj: KeyDTO) -> KeyDTO:
|
||||
self.pool.set(obj.key, obj.val)
|
||||
return KeyDTO(key="3", val="4")
|
||||
|
||||
def put_key(self, obj: KeyDTO) -> KeyDTO:
|
||||
return KeyDTO(key="5", val="6")
|
0
flask_demo_api/routers/__init__.py
Normal file
0
flask_demo_api/routers/__init__.py
Normal file
42
flask_demo_api/routers/key.py
Normal file
42
flask_demo_api/routers/key.py
Normal file
@@ -0,0 +1,42 @@
|
||||
from flask import Blueprint, jsonify, request
|
||||
|
||||
key_bp = Blueprint("key_bp", __name__)
|
||||
|
||||
|
||||
@key_bp.route("/", methods=["POST"])
|
||||
def past_key():
|
||||
json_data = request.get_json()
|
||||
|
||||
if json_data:
|
||||
return (
|
||||
jsonify({"message": "Received JSON data successfully", "data": json_data}),
|
||||
200,
|
||||
)
|
||||
else:
|
||||
return jsonify({"message": "No JSON data received"}), 400
|
||||
|
||||
|
||||
@key_bp.route("/", methods=["GET"])
|
||||
def get_key():
|
||||
json_data = request.args.get("key")
|
||||
|
||||
if json_data:
|
||||
return (
|
||||
jsonify({"message": "Received JSON data successfully", "data": json_data}),
|
||||
200,
|
||||
)
|
||||
else:
|
||||
return jsonify({"message": "No JSON data received"}), 400
|
||||
|
||||
|
||||
@key_bp.route("/", methods=["PUT"])
|
||||
def put_key():
|
||||
json_data = request.get_json()
|
||||
|
||||
if json_data:
|
||||
return (
|
||||
jsonify({"message": "Received JSON data successfully", "data": json_data}),
|
||||
200,
|
||||
)
|
||||
else:
|
||||
return jsonify({"message": "No JSON data received"}), 400
|
0
flask_demo_api/usecase/__init__.py
Normal file
0
flask_demo_api/usecase/__init__.py
Normal file
0
flask_demo_api/usecase/add.py
Normal file
0
flask_demo_api/usecase/add.py
Normal file
13
flask_demo_api/usecase/get.py
Normal file
13
flask_demo_api/usecase/get.py
Normal file
@@ -0,0 +1,13 @@
|
||||
from flask_demo_api.protocols.models import KeyDTO
|
||||
from flask_demo_api.protocols.repository import Repository
|
||||
|
||||
|
||||
class GetKey:
|
||||
def __init__(
|
||||
self,
|
||||
repository: Repository,
|
||||
) -> None:
|
||||
self.repository = repository
|
||||
|
||||
def __call__(self, request: KeyDTO) -> KeyDTO | None:
|
||||
return self.repository.get_key(obj=request)
|
0
flask_demo_api/usecase/put.py
Normal file
0
flask_demo_api/usecase/put.py
Normal file
Reference in New Issue
Block a user