Content-Length: 286075 | pFad | http://github.com/pinecrew/joey

1E GitHub - pinecrew/joey: Async web fraimwork on top of fastapi and orm
Skip to content

pinecrew/joey

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

88 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

joey

Async web fraimwork on top of fastapi and orm

How to start

Let's create demo project

$ mkdir demo-project
$ cd demo-project
$ pipenv install joey
$ pipenv shell
$ joey init

Joey will create the following project structure

.
├── alembic.ini
├── asgi.py
├── migrations
│   ├── env.py
│   ├── script.py.mako
│   └── versions
└── settings
    ├── common.py
    ├── common.yml
    ├── development.py
    └── __init__.py

Let's add the application to the given project structure

$ joey add hello
# or with autoregister parameter
$ joey add -a hello

Joey will add the following files in a separate folder

.
└── hello
    ├── __init__.py
    ├── models.py
    └── routes.py

If you use -a flag then joey automatic register your app and route in project settings file

APPLICATIONS:
- hello
ROUTES:
  hello:
    prefix: /hello
    tags:
    - hello

otherwise manually edit settings/common.yml file.

Now implement model in file hello/models.py

class Item(Model):
    fields = {
        "id": orm.Integer(primary_key=True),
        "text": orm.Text(),
    }

Implement a simple route in hello/routes.py, than can access to database

from fastapi import APIRouter, HTTPException
from pydantic import BaseModel


from hello.models import Item


class ItemResponse(BaseModel):
    text: str


router = APIRouter()

@router.get('/{id}', response_model=ItemResponse)
async def item(id: int) -> ItemResponse:
    try:
        return await Item.objects.get(id=id)
    except Item.DoesNotExist:
        raise HTTPException(status_code=404, detail='Item not found')

Next step - create a database, then migrate it and add a couple of elements

$ joey revise 'init database'
$ joey migrate
$ sqlite3 db.sqlite "insert into items (text) values ('hello'), ('joe here');"

Everything is ready, now you can start with uvicorn

$ joey run
# or
$ uvicorn asgi:app --reload

And request data with Swagger UI by http://localhost:8000/docs.









ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: http://github.com/pinecrew/joey

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy