Skip to main content

Nestipy dababase adapter for edgy

Project description

Nestipy Logo

Version Python License

NestipyDB

NestipyDB is the official database module for Nestipy. It is built on top of Edgy and designed to be modular and configurable.

Installation

NestipyDB depends on Edgy. Make sure to follow the Edgy installation guide to set up dependencies for your specific database.

pip install nestipy-db

Usage

First, in your app_module.py, replace the url in DbConfig with your own:

from nestipy.common import Module
from nestipy_db import DbConfig, DbModule,AdminConfig

@Module(
    imports=[
        DbModule.for_root(
            DbConfig(
                url="sqlite:///db.sqlite",
                models=[],
                admin=AdminConfig(enable=True, url="/admin"), # if you need admin dashboard for model
            )
        ),
        # other modules...
    ]
)
class AppModule:
    ...

To load the config asynchronously, use DbModule.for_root_async:

from typing import Annotated
from nestipy.common import Module
from nestipy.ioc import Inject
from nestipy_config import ConfigModule, ConfigService, ConfigOption
from nestipy_db import DbConfig, DbModule

async def get_db_config(config: Annotated[ConfigService, Inject()]):
    return DbConfig(
        url=config.get("DATABASE_URL"),
        models=[]
    )

@Module(
    imports=[
        ConfigModule.for_root(ConfigOption(), is_global=True),
        DbModule.for_root_async(
            factory=get_db_config,
            inject=[ConfigService]
        ),
        # other modules...
    ]
)
class AppModule:
    ...

Models

Every model must be decorated with Model and must extends BaseModel from nestipy_db

from datetime import datetime
from uuid import UUID, uuid4

import edgy
from ..user.user_model import User
from nestipy_db import BaseModel, Model


@Model()
class Post(BaseModel):
    id: UUID = edgy.UUIDField(primary_key=True, default=uuid4, editable=False)
    title: str = edgy.CharField(max_length=256, default="")
    user: User = edgy.ForeignKey(User, on_delete=edgy.CASCADE, related_name="posts")
    reaction: list[User] = edgy.ManyToManyField(
        User, through_tablename=edgy.NEW_M2M_NAMING
    )
    created_at: datetime = edgy.DateTimeField(auto_now_add=True)
    updated_at: datetime = edgy.DateTimeField(auto_now=True)

Note

Note that, you need to register all of your models inside DbConfig(..., models=[]) or by importing DbModule.for_feature(Model1, Model2) in your current module.

CLI

NestipyDB aliases Edgy CLI commands and adds support for model generation. Instead of using edgy, use:

nestipy run db #follow edgy command

NestipyDB introduces a new model generation command:

nestipy run db new|g|gen|generate model_name module_name
  • module_name is optional.
  • If omitted, model_name will also be used as the module_name.
  • The model will be created inside the specified module, or the module folder will be created if it doesn't exist.

Admin

If admin is enabled, you can access it with the url specified in AdminConfig. The default credential for llogin is email: test@admin.com,password: admin. You can override this via AdminConfig. Other options are also available.

AdminPanel

Support

Nestipy is an MIT-licensed open source project. It continues to grow thanks to support from the community. If you'd like to contribute or sponsor, please [read more here].

Stay in Touch

License

Nestipy is MIT licensed.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nestipy_db-0.1.2.tar.gz (424.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nestipy_db-0.1.2-py3-none-any.whl (260.5 kB view details)

Uploaded Python 3

File details

Details for the file nestipy_db-0.1.2.tar.gz.

File metadata

  • Download URL: nestipy_db-0.1.2.tar.gz
  • Upload date:
  • Size: 424.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.21

File hashes

Hashes for nestipy_db-0.1.2.tar.gz
Algorithm Hash digest
SHA256 2fec4d6625e7489cf3471ee784c986de8982e565a363304e8470a12768c1455e
MD5 3af37ad5ea521404f2c1cad95b50ce74
BLAKE2b-256 28cae9887f4303c5d119f8b694e128118a315ccc4bbf85ec71fd64ffa0dea7d6

See more details on using hashes here.

File details

Details for the file nestipy_db-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: nestipy_db-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 260.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.21

File hashes

Hashes for nestipy_db-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 502d5d75f50d30ce447b4c2ffc81051ddbb7f4aa84b7c08da4152c0cc3703bd2
MD5 418aab37ce49368644e6aee0802bcb85
BLAKE2b-256 de2eddf6996f02ad1ca22935075dbb3e9b8f9d49b213138058a27ed5e7dbc299

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page