Skip to content

Commit

Permalink
update queries and tests
Browse files Browse the repository at this point in the history
  • Loading branch information
jrycw committed Mar 2, 2024
1 parent bfbd293 commit 52e1ac1
Show file tree
Hide file tree
Showing 17 changed files with 215 additions and 223 deletions.
4 changes: 2 additions & 2 deletions app/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,11 @@ class EventHostName(BaseModel):


class EventAddress(BaseModel):
address: str | None
address: str | None = Field(default=None)


class EventSchedule(BaseModel):
schedule: str | None
schedule: str | None = Field(default=None)


class EventCreate(EventSchedule, EventAddress, EventHostName, EventName):
Expand Down
5 changes: 2 additions & 3 deletions app/queries/create_event.edgeql
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@ select (
with u:= assert_single((select User filter .name = host_name)),
select
if exists u then (u)
else if exists host_name then (insert User {name:= host_name})
else (<User>{})
else (insert User {name:= host_name})
)
}
) {name, address, schedule, host: {name}};
) {name, address, schedule, host_name:=.host.name};
13 changes: 3 additions & 10 deletions app/queries/create_event_async_edgeql.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,7 @@ class CreateEventResult(NoPydanticValidation):
name: str
address: str | None
schedule: datetime.datetime | None
host: CreateEventResultHost


@dataclasses.dataclass
class CreateEventResultHost(NoPydanticValidation):
id: uuid.UUID
name: str
host_name: str


async def create_event(
Expand All @@ -63,11 +57,10 @@ async def create_event(
with u:= assert_single((select User filter .name = host_name)),
select
if exists u then (u)
else if exists host_name then (insert User {name:= host_name})
else (<User>{})
else (insert User {name:= host_name})
)
}
) {name, address, schedule, host: {name}};\
) {name, address, schedule, host_name:=.host.name};\
""",
name=name,
address=address,
Expand Down
2 changes: 1 addition & 1 deletion app/queries/delete_event.edgeql
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
select (
delete Event filter .name = <str>$name
) {name, address, schedule, host : {name}};
) {name, address, schedule, host_name:=.host.name};
10 changes: 2 additions & 8 deletions app/queries/delete_event_async_edgeql.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,7 @@ class DeleteEventResult(NoPydanticValidation):
name: str
address: str | None
schedule: datetime.datetime | None
host: DeleteEventResultHost


@dataclasses.dataclass
class DeleteEventResultHost(NoPydanticValidation):
id: uuid.UUID
name: str
host_name: str


async def delete_event(
Expand All @@ -49,7 +43,7 @@ async def delete_event(
"""\
select (
delete Event filter .name = <str>$name
) {name, address, schedule, host : {name}};\
) {name, address, schedule, host_name:=.host.name};\
""",
name=name,
)
2 changes: 1 addition & 1 deletion app/queries/get_event_by_name.edgeql
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@ select Event {
created_at,
address,
schedule,
host : {name}
host_name:=.host.name
} filter .name=<str>$name;
10 changes: 2 additions & 8 deletions app/queries/get_event_by_name_async_edgeql.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,7 @@ class GetEventByNameResult(NoPydanticValidation):
created_at: datetime.datetime
address: str | None
schedule: datetime.datetime | None
host: GetEventByNameResultHost


@dataclasses.dataclass
class GetEventByNameResultHost(NoPydanticValidation):
id: uuid.UUID
name: str
host_name: str


async def get_event_by_name(
Expand All @@ -53,7 +47,7 @@ async def get_event_by_name(
created_at,
address,
schedule,
host : {name}
host_name:=.host.name
} filter .name=<str>$name;\
""",
name=name,
Expand Down
2 changes: 1 addition & 1 deletion app/queries/get_events.edgeql
Original file line number Diff line number Diff line change
@@ -1 +1 @@
select Event {name, created_at, address, schedule, host : {name}};
select Event {name, created_at, address, schedule, host_name:=.host.name};
10 changes: 2 additions & 8 deletions app/queries/get_events_async_edgeql.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,20 +32,14 @@ class GetEventsResult(NoPydanticValidation):
created_at: datetime.datetime
address: str | None
schedule: datetime.datetime | None
host: GetEventsResultHost


@dataclasses.dataclass
class GetEventsResultHost(NoPydanticValidation):
id: uuid.UUID
name: str
host_name: str


async def get_events(
executor: edgedb.AsyncIOExecutor,
) -> list[GetEventsResult]:
return await executor.query(
"""\
select Event {name, created_at, address, schedule, host : {name}};\
select Event {name, created_at, address, schedule, host_name:=.host.name};\
""",
)
5 changes: 2 additions & 3 deletions app/queries/update_event.edgeql
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,7 @@ select (
with u:= assert_single((select detached User filter .name = host_name)),
select
if exists u then (u)
else if exists host_name then (insert User {name:= host_name})
else (<User>{})
else (insert User {name:= host_name})
)
}
) {name, address, schedule, host: {name}};
) {name, address, schedule, host_name:=.host.name};
13 changes: 3 additions & 10 deletions app/queries/update_event_async_edgeql.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,7 @@ class UpdateEventResult(NoPydanticValidation):
name: str
address: str | None
schedule: datetime.datetime | None
host: UpdateEventResultHost


@dataclasses.dataclass
class UpdateEventResultHost(NoPydanticValidation):
id: uuid.UUID
name: str
host_name: str


async def update_event(
Expand Down Expand Up @@ -71,11 +65,10 @@ async def update_event(
with u:= assert_single((select detached User filter .name = host_name)),
select
if exists u then (u)
else if exists host_name then (insert User {name:= host_name})
else (<User>{})
else (insert User {name:= host_name})
)
}
) {name, address, schedule, host: {name}};\
) {name, address, schedule, host_name:=.host.name};\
""",
name=name,
new_name=new_name,
Expand Down
1 change: 1 addition & 0 deletions fastui_app/users.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ async def user_createview(
):
client = await services.aget(BackendAsyncClient)
resp = await client.post("/users", json=form.model_dump())

# raised, but how to do a full page reload?
# resp_json = _raise_for_status(resp, HTTPStatus.CREATED)

Expand Down
14 changes: 3 additions & 11 deletions fastui_app/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,8 @@ def _form_user_repr(resp_json: dict[str, str]) -> UserRepr:

def _form_event_repr(resp_json: dict[str, str | dict[str, str] | None]) -> EventRepr:
"""
`host_name = resp_json["host"]["name"]` works because host
is required in the schema. If the rendering issue for
`GoToEvent(url="/users/{host_name}/")` can be resolved,
then we can do:
host_name = None
if host := resp_json["host"]:
host_name = host.get("name")
Q: Why `host_name` is required in the schema?
A: Since there exists a rendering issue for
`GoToEvent(url="/users/{host_name}/")`.
"""
host_name = resp_json["host"]["name"] # since host is required in the schema
resp_json.update(host_name=host_name)
del resp_json["host"]
return EventRepr(**resp_json)
2 changes: 0 additions & 2 deletions tests/conftest.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
from __future__ import annotations

from unittest.mock import Mock

import pytest
Expand Down
5 changes: 2 additions & 3 deletions tests/factories.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
from __future__ import annotations

import datetime
import random

Expand All @@ -19,7 +17,7 @@ class TestAuditable(BaseModel):


class TestUserData(TestAuditable):
name: str = Field(default_factory=faker.name)
name: str = Field(default_factory=faker.name, max_length=50)


class TestUserDataWithnEvents(TestUserData):
Expand All @@ -34,3 +32,4 @@ class TestEventData(TestAuditable):
microsecond=random.randint(0, 1000000)
)
)
host_name: str = Field(default_factory=faker.name, max_length=50)
Loading

0 comments on commit 52e1ac1

Please sign in to comment.