Rename producer to service and consumer to client #41

Merged
merge-bot merged 8 commits from Qubasa-main into main 2024-01-07 14:24:17 +00:00
9 changed files with 140 additions and 150 deletions
Showing only changes of commit 5fad1e678f - Show all commits

View File

@@ -9,16 +9,16 @@ from sqlalchemy.orm import Session
from ...errors import ClanError
from .. import sql_crud, sql_db, sql_models
from ..schemas import (
Consumer,
ConsumerCreate,
Client,
ClientCreate,
Entity,
EntityCreate,
Producer,
ProducerCreate,
Repository,
RepositoryCreate,
Resolution,
ResolutionCreate,
Service,
ServiceCreate,
)
from ..tags import Tags
@@ -29,92 +29,82 @@ log = logging.getLogger(__name__)
#########################
# #
# Producer #
# Service #
# #
#########################
@router.post("/api/v1/create_producer", response_model=Producer, tags=[Tags.producers])
def create_producer(
producer: ProducerCreate, db: Session = Depends(sql_db.get_db)
) -> Producer:
@router.post("/api/v1/create_service", response_model=Service, tags=[Tags.services])
def create_service(
service: ServiceCreate, db: Session = Depends(sql_db.get_db)
) -> Service:
# todo checken ob schon da ...
return sql_crud.create_producer(db=db, producer=producer)
return sql_crud.create_service(db=db, service=service)
@router.get(
"/api/v1/get_producers", response_model=List[Producer], tags=[Tags.producers]
)
def get_producers(
@router.get("/api/v1/get_services", response_model=List[Service], tags=[Tags.services])
def get_services(
skip: int = 0, limit: int = 100, db: Session = Depends(sql_db.get_db)
) -> List[sql_models.Producer]:
producers = sql_crud.get_producers(db, skip=skip, limit=limit)
return producers
) -> List[sql_models.Service]:
services = sql_crud.get_services(db, skip=skip, limit=limit)
return services
@router.get(
"/api/v1/get_producer", response_model=List[Producer], tags=[Tags.producers]
)
def get_producer(
@router.get("/api/v1/get_service", response_model=List[Service], tags=[Tags.services])
def get_service(
entity_did: str = "did:sov:test:1234",
skip: int = 0,
limit: int = 100,
db: Session = Depends(sql_db.get_db),
) -> List[sql_models.Producer]:
producer = sql_crud.get_producers_by_entity_did(db, entity_did=entity_did)
return producer
) -> List[sql_models.Service]:
service = sql_crud.get_services_by_entity_did(db, entity_did=entity_did)
return service
@router.delete("/api/v1/delete_producer", tags=[Tags.producers])
def delete_producer(
@router.delete("/api/v1/delete_service", tags=[Tags.services])
def delete_service(
entity_did: str = "did:sov:test:1234",
db: Session = Depends(sql_db.get_db),
) -> dict[str, str]:
sql_crud.delete_producer_by_entity_did(db, entity_did)
return {"message": "Producer deleted"}
sql_crud.delete_service_by_entity_did(db, entity_did)
return {"message": "service deleted"}
#########################
# #
# Consumer #
# Client #
# #
#########################
@router.post("/api/v1/create_consumer", response_model=Consumer, tags=[Tags.consumers])
def create_consumer(
consumer: ConsumerCreate, db: Session = Depends(sql_db.get_db)
) -> Consumer:
@router.post("/api/v1/create_client", response_model=Client, tags=[Tags.clients])
def create_client(client: ClientCreate, db: Session = Depends(sql_db.get_db)) -> Client:
# todo checken ob schon da ...
return sql_crud.create_consumer(db=db, consumer=consumer)
return sql_crud.create_client(db=db, client=client)
@router.get(
"/api/v1/get_consumers", response_model=List[Consumer], tags=[Tags.consumers]
)
def get_consumers(
@router.get("/api/v1/get_clients", response_model=List[Client], tags=[Tags.clients])
def get_clients(
skip: int = 0, limit: int = 100, db: Session = Depends(sql_db.get_db)
) -> List[sql_models.Consumer]:
consumers = sql_crud.get_consumers(db, skip=skip, limit=limit)
return consumers
) -> List[sql_models.Client]:
clients = sql_crud.get_clients(db, skip=skip, limit=limit)
return clients
@router.get(
"/api/v1/get_consumer", response_model=List[Consumer], tags=[Tags.consumers]
)
def get_consumer(
@router.get("/api/v1/get_client", response_model=List[Client], tags=[Tags.clients])
def get_client(
entity_did: str = "did:sov:test:1234",
skip: int = 0,
limit: int = 100,
db: Session = Depends(sql_db.get_db),
) -> List[sql_models.Consumer]:
consumer = sql_crud.get_consumers_by_entity_did(db, entity_did=entity_did)
return consumer
) -> List[sql_models.Client]:
client = sql_crud.get_client_by_entity_did(db, entity_did=entity_did)
return client
@router.delete("/api/v1/delete_consumer", tags=[Tags.consumers])
def delete_consumer(
@router.delete("/api/v1/delete_client", tags=[Tags.clients])
def delete_client(
entity_did: str = "did:sov:test:1234",
db: Session = Depends(sql_db.get_db),
) -> dict[str, str]:
sql_crud.delete_consumer_by_entity_did(db, entity_did)
return {"message": "Consumer deleted"}
sql_crud.delete_client_by_entity_did(db, entity_did)
return {"message": "client deleted"}
#########################

View File

@@ -18,10 +18,10 @@ class Machine(BaseModel):
#########################
# #
# Producer #
# Service #
# #
#########################
class ProducerBase(BaseModel):
class ServiceBase(BaseModel):
uuid: str = "8e285c0c-4e40-430a-a477-26b3b81e30df"
service_name: str = "Carlo's Printing"
service_type: str = "3D Printing"
@@ -30,11 +30,11 @@ class ProducerBase(BaseModel):
other: dict = {"action": ["register", "deregister", "delete", "create"]}
class ProducerCreate(ProducerBase):
class ServiceCreate(ServiceBase):
entity_did: str = "did:sov:test:1234"
class Producer(ProducerCreate):
class Service(ServiceCreate):
class Config:
orm_mode = True
@@ -44,17 +44,17 @@ class Producer(ProducerCreate):
# Consumer #
# #
#########################
class ConsumerBase(BaseModel):
class ClientBase(BaseModel):
entity_did: str = "did:sov:test:1234"
producer_uuid: str = "8e285c0c-4e40-430a-a477-26b3b81e30df"
service_uuid: str = "8e285c0c-4e40-430a-a477-26b3b81e30df"
other: dict = {"test": "test"}
class ConsumerCreate(ConsumerBase):
class ClientCreate(ClientBase):
pass
class Consumer(ConsumerCreate):
class Client(ClientCreate):
id: int
class Config:
@@ -66,7 +66,7 @@ class Consumer(ConsumerCreate):
# REPOSITORY #
# #
#########################
class RepositoryBase(ProducerBase):
class RepositoryBase(ServiceBase):
pass
@@ -103,8 +103,8 @@ class EntityCreate(EntityBase):
class Entity(EntityCreate):
producers: List[Producer] = []
consumers: List[Consumer] = []
services: List[Service] = []
clients: List[Client] = []
repository: List[Repository] = []
class Config:

View File

@@ -8,84 +8,80 @@ from . import schemas, sql_models
#########################
# #
# Producer #
# service #
# #
#########################
def create_producer(
db: Session, producer: schemas.ProducerCreate
) -> sql_models.Producer:
db_producer = sql_models.Producer(**producer.dict())
db.add(db_producer)
def create_service(db: Session, service: schemas.ServiceCreate) -> sql_models.Service:
db_service = sql_models.Service(**service.dict())
db.add(db_service)
db.commit()
db.refresh(db_producer)
return db_producer
db.refresh(db_service)
return db_service
def get_producers(
def get_services(
db: Session, skip: int = 0, limit: int = 100
) -> List[sql_models.Producer]:
return db.query(sql_models.Producer).offset(skip).limit(limit).all()
) -> List[sql_models.Service]:
return db.query(sql_models.Service).offset(skip).limit(limit).all()
def get_producers_by_entity_did(
def get_services_by_entity_did(
db: Session, entity_did: str, skip: int = 0, limit: int = 100
) -> List[sql_models.Producer]:
) -> List[sql_models.Service]:
return (
db.query(sql_models.Producer)
.filter(sql_models.Producer.entity_did == entity_did)
db.query(sql_models.Service)
.filter(sql_models.Service.entity_did == entity_did)
.offset(skip)
.limit(limit)
.all()
)
def delete_producer_by_entity_did(db: Session, entity_did: str) -> None:
db.query(sql_models.Producer).filter(
sql_models.Producer.entity_did == entity_did
def delete_service_by_entity_did(db: Session, entity_did: str) -> None:
db.query(sql_models.Service).filter(
sql_models.Service.entity_did == entity_did
).delete()
db.commit()
#########################
# #
# Consumer #
# client #
# #
#########################
def create_consumer(
db: Session, consumer: schemas.ConsumerCreate
) -> sql_models.Consumer:
db_consumer = sql_models.Consumer(**consumer.dict())
db.add(db_consumer)
def create_client(db: Session, client: schemas.ClientCreate) -> sql_models.Client:
db_client = sql_models.Client(**client.dict())
db.add(db_client)
db.commit()
db.refresh(db_consumer)
return db_consumer
db.refresh(db_client)
return db_client
def get_consumers(
def get_clients(
db: Session, skip: int = 0, limit: int = 100
) -> List[sql_models.Consumer]:
return db.query(sql_models.Consumer).offset(skip).limit(limit).all()
) -> List[sql_models.Client]:
return db.query(sql_models.Client).offset(skip).limit(limit).all()
def get_consumers_by_entity_did(
def get_client_by_entity_did(
db: Session, entity_did: str, skip: int = 0, limit: int = 100
) -> List[sql_models.Consumer]:
) -> List[sql_models.Client]:
return (
db.query(sql_models.Consumer)
.filter(sql_models.Consumer.entity_did == entity_did)
db.query(sql_models.Client)
.filter(sql_models.Client.entity_did == entity_did)
.offset(skip)
.limit(limit)
.all()
)
def delete_consumer_by_entity_did(db: Session, entity_did: str) -> None:
db.query(sql_models.Consumer).filter(
sql_models.Consumer.entity_did == entity_did
def delete_client_by_entity_did(db: Session, entity_did: str) -> None:
db.query(sql_models.Client).filter(
sql_models.Client.entity_did == entity_did
).delete()
db.commit()
@@ -198,8 +194,8 @@ def delete_entity_by_did(db: Session, did: str) -> None:
def delete_entity_by_did_recursive(db: Session, did: str) -> None:
delete_producer_by_entity_did(db, did)
delete_consumer_by_entity_did(db, did)
delete_service_by_entity_did(db, did)
delete_client_by_entity_did(db, did)
delete_repository_by_entity_did(db, did)
delete_entity_by_did(db, did)

View File

@@ -33,13 +33,13 @@ class Entity(Base):
other = Column(JSON)
## Relations ##
producers = relationship("Producer", back_populates="entity")
consumers = relationship("Consumer", back_populates="entity")
services = relationship("Service", back_populates="entity")
clients = relationship("Client", back_populates="entity")
repository = relationship("Repository", back_populates="entity")
# TODO maby refactor to repositories
class ProducerAbstract(Base):
class ServiceAbstract(Base):
__abstract__ = True
# Queryable body
@@ -54,22 +54,22 @@ class ProducerAbstract(Base):
other = Column(JSON)
class Producer(ProducerAbstract):
__tablename__ = "producers"
class Service(ServiceAbstract):
__tablename__ = "services"
# Usage is the consumers column
# Usage is the clients column
## Relations ##
# One entity can have many producers
entity = relationship("Entity", back_populates="producers")
# One entity can have many services
entity = relationship("Entity", back_populates="services")
entity_did = Column(String, ForeignKey("entities.did"))
# One producer has many consumers
consumers = relationship("Consumer", back_populates="producer")
# One service has many clients
clients = relationship("Client", back_populates="service")
class Consumer(Base):
__tablename__ = "consumers"
class Client(Base):
__tablename__ = "clients"
## Queryable body ##
id = Column(Integer, primary_key=True, index=True)
@@ -78,18 +78,18 @@ class Consumer(Base):
other = Column(JSON)
## Relations ##
# one entity can have many consumers
entity = relationship("Entity", back_populates="consumers")
# one entity can have many clients
entity = relationship("Entity", back_populates="clients")
entity_did = Column(String, ForeignKey("entities.did"))
# one consumer has one producer
producer = relationship("Producer", back_populates="consumers")
producer_uuid = Column(String, ForeignKey("producers.uuid"))
# one client has one service
service = relationship("Service", back_populates="clients")
service_uuid = Column(String, ForeignKey("services.uuid"))
__table_args__ = (UniqueConstraint("producer_uuid", "entity_did"),)
__table_args__ = (UniqueConstraint("service_uuid", "entity_did"),)
class Repository(ProducerAbstract):
class Repository(ServiceAbstract):
__tablename__ = "repositories"
time_created = Column(DateTime(timezone=True), server_default=func.now())

View File

@@ -3,8 +3,8 @@ from typing import Any, Dict, List
class Tags(Enum):
producers = "producers"
consumers = "consumers"
services = "services"
clients = "clients"
entities = "entities"
repositories = "repositories"
resolutions = "resolution"
@@ -15,12 +15,12 @@ class Tags(Enum):
tags_metadata: List[Dict[str, Any]] = [
{
"name": str(Tags.producers),
"description": "Operations on a producer.",
"name": str(Tags.services),
"description": "Operations on a service.",
},
{
"name": str(Tags.consumers),
"description": "Operations on a consumer.",
"name": str(Tags.clients),
"description": "Operations on a client.",
},
{
"name": str(Tags.entities),

View File

@@ -0,0 +1,3 @@
#!/usr/bin/env bash
while true ; do printf 'HTTP/1.1 200 OK\r\n\r\ncool, thanks' | nc -l -N 127.0.0.1 5555 ; done

View File

@@ -43,11 +43,11 @@ def make_test_post_and_get(
assert_extra_info(["time_created"], request_body, response.json())
elif paramter == "resolution":
assert_extra_info(["timestamp", "id"], request_body, response.json())
elif paramter == "consumer":
elif paramter == "client":
assert_extra_info(["id"], request_body, response.json())
elif paramter == "entity":
assert_extra_info(
["consumers", "producers", "repository"], request_body, response.json()
["clients", "services", "repository"], request_body, response.json()
)
else:
assert response.json() == request_body
@@ -60,11 +60,11 @@ def make_test_post_and_get(
assert_extra_info(["time_created"], request_body, response.json()[0])
elif paramter == "resolution":
assert_extra_info(["timestamp", "id"], request_body, response.json()[0])
elif paramter == "consumer":
elif paramter == "client":
assert_extra_info(["id"], request_body, response.json()[0])
elif paramter == "entity":
assert_extra_info(
["consumers", "producers", "repository"], request_body, response.json()
["clients", "services", "repository"], request_body, response.json()
)
else:
assert response.json() == [request_body]
@@ -72,10 +72,10 @@ def make_test_post_and_get(
#########################
# #
# Producer #
# service #
# #
#########################
def test_producer(api: TestClient) -> None:
def test_service(api: TestClient) -> None:
request_body = {
"uuid": "8e285c0c-4e40-430a-a477-26b3b81e30df",
"service_name": "Carlo'''s Printing",
@@ -85,12 +85,12 @@ def test_producer(api: TestClient) -> None:
"other": {"action": ["register", "deregister", "delete", "create"]},
"entity_did": default_entity_did,
}
paramter = "producer"
paramter = "service"
# get_request = "entity_did=did%3Asov%3Atest%3A1234"
make_test_post_and_get(api, request_body, paramter)
def test_producer2(api: TestClient) -> None:
def test_service2(api: TestClient) -> None:
request_body = {
"uuid": "8e285c0c-4e40-430a-a477-26b3b81e30d1",
"service_name": "Luis'''s Fax",
@@ -100,12 +100,12 @@ def test_producer2(api: TestClient) -> None:
"other": {"action": ["register", "deregister", "delete", "create"]},
"entity_did": default_entity_did2,
}
paramter = "producer"
paramter = "service"
get_request = "entity_did=" + url.quote(default_entity_did2)
make_test_post_and_get(api, request_body, paramter, get_request)
def test_producer3(api: TestClient) -> None:
def test_service3(api: TestClient) -> None:
request_body = {
"uuid": "8e285c0c-4e40-430a-a477-26b3b81e30d2",
"service_name": "Erdem'''s VR-Stream",
@@ -115,12 +115,12 @@ def test_producer3(api: TestClient) -> None:
"other": {"action": ["register", "deregister", "delete", "create"]},
"entity_did": default_entity_did3,
}
paramter = "producer"
paramter = "service"
get_request = "entity_did=" + url.quote(default_entity_did3)
make_test_post_and_get(api, request_body, paramter, get_request)
def test_producer4(api: TestClient) -> None:
def test_service4(api: TestClient) -> None:
request_body = {
"uuid": "8e285c0c-4e40-430a-a477-26b3b81e30d3",
"service_name": "Onur'''s gallary",
@@ -130,12 +130,12 @@ def test_producer4(api: TestClient) -> None:
"other": {"action": ["register", "deregister", "delete", "create"]},
"entity_did": default_entity_did4,
}
paramter = "producer"
paramter = "service"
get_request = "entity_did=" + url.quote(default_entity_did4)
make_test_post_and_get(api, request_body, paramter, get_request)
def test_producer5(api: TestClient) -> None:
def test_service5(api: TestClient) -> None:
request_body = {
"uuid": "8e285c0c-4e40-430a-a477-26b3b81e30d4",
"service_name": "Sara'''s Game-Shop",
@@ -145,34 +145,34 @@ def test_producer5(api: TestClient) -> None:
"other": {"action": ["register", "deregister", "delete", "create"]},
"entity_did": default_entity_did5,
}
paramter = "producer"
paramter = "service"
get_request = "entity_did=" + url.quote(default_entity_did5)
make_test_post_and_get(api, request_body, paramter, get_request)
#########################
# #
# Consumer #
# client #
# #
#########################
def test_consumer(api: TestClient) -> None:
def test_client(api: TestClient) -> None:
request_body = {
"entity_did": default_entity_did,
"producer_uuid": "8e285c0c-4e40-430a-a477-26b3b81e30df",
"service_uuid": "8e285c0c-4e40-430a-a477-26b3b81e30df",
"other": {"test": "test"},
}
paramter = "consumer"
paramter = "client"
# get_request = "entity_did=did%3Asov%3Atest%3A1234"
make_test_post_and_get(api, request_body, paramter)
def test_consumer2(api: TestClient) -> None:
def test_client2(api: TestClient) -> None:
request_body = {
"entity_did": default_entity_did2,
"producer_uuid": "8e285c0c-4e40-430a-a477-26b3b81e30d4",
"service_uuid": "8e285c0c-4e40-430a-a477-26b3b81e30d4",
"other": {"war": "games"},
}
paramter = "consumer"
paramter = "client"
get_request = "entity_did=" + url.quote(default_entity_did2)
make_test_post_and_get(api, request_body, paramter, get_request)
@@ -271,7 +271,7 @@ def test_entity(api: TestClient) -> None:
"visible": True,
"other": {
"network": "Carlo1's Home Network",
"roles": ["service repository", "service consumer"],
"roles": ["service repository", "service client"],
},
}
paramter = "entity"

View File

@@ -25,3 +25,4 @@ Than run this command:
```
GITEA_TOKEN=<YOUR_TOKEN> nix run .#update-ui-assets
```
.

View File

@@ -1,5 +1,5 @@
{ fetchzip }:
fetchzip {
url = "https://gitea.gchq.icu/api/packages/IoSL/generic/IoSL-service-aware-frontend/15d2rn12jhrwry2ipvjhn62dgl7vvdrkc1zkp02xfvaz8ijf18s8/assets.tar.gz";
sha256 = "15d2rn12jhrwry2ipvjhn62dgl7vvdrkc1zkp02xfvaz8ijf18s8";
sha256 = "sha256-SKPgZERfbdcFuPMHNnPb+9DXhLFQ7huFzzxDKYLNopU=";
}