use example imports for tests and eventual demo

This commit is contained in:
evilchili 2025-09-24 21:34:32 -07:00
parent 235d26ff1e
commit e5c0d66bde
3 changed files with 7 additions and 19 deletions

View File

@ -1,6 +1,6 @@
[tool.poetry] [tool.poetry]
name = "grung-db" name = "grung-db"
version = "1.0" version = "1.0.0.2"
description = "grung-db: A very small database toolkit." description = "grung-db: A very small database toolkit."
authors = ["evilchili"] authors = ["evilchili"]
readme = "README.md" readme = "README.md"

View File

@ -52,6 +52,7 @@ class GrungDB(TinyDB):
def create_table(self, table_class): def create_table(self, table_class):
name = table_class.__name__ name = table_class.__name__
print(name)
if name not in self._tables: if name not in self._tables:
self._tables[name] = RecordTable(self.storage, name, document_class=table_class) self._tables[name] = RecordTable(self.storage, name, document_class=table_class)
return self.table(name) return self.table(name)
@ -77,6 +78,6 @@ class GrungDB(TinyDB):
def with_schema(cls, schema_module, *args, **kwargs): def with_schema(cls, schema_module, *args, **kwargs):
db = GrungDB(*args, **kwargs) db = GrungDB(*args, **kwargs)
for name, obj in inspect.getmembers(schema_module): for name, obj in inspect.getmembers(schema_module):
if type(obj) == object and issubclass(Record, obj): if type(obj) == type and issubclass(obj, Record):
db.create_table(obj) db.create_table(obj)
return db return db

View File

@ -1,32 +1,19 @@
import sys
from typing import List
import pytest import pytest
from tinydb.storages import MemoryStorage from tinydb.storages import MemoryStorage
from grung import examples
from grung.db import GrungDB from grung.db import GrungDB
from grung.types import Field, Record
class User(Record):
_fields = [Field("name"), Field("email", unique=True)]
class Group(Record):
_fields = [Field("name", unique=True), Field("users", List[User])]
@pytest.fixture @pytest.fixture
def db(): def db():
_db = GrungDB.with_schema(sys.modules[__name__], storage=MemoryStorage) _db = GrungDB.with_schema(examples, storage=MemoryStorage)
_db.create_table(User)
_db.create_table(Group)
yield _db yield _db
print(_db) print(_db)
def test_crud(db): def test_crud(db):
user = User(name="john", email="john@foo") user = examples.User(name="john", email="john@foo")
assert user.uid assert user.uid
assert user._metadata.fields["uid"].unique assert user._metadata.fields["uid"].unique
@ -48,7 +35,7 @@ def test_crud(db):
assert before_update != after_update assert before_update != after_update
# pointers # pointers
players = Group(name="players", users=[john_something]) players = examples.Group(name="players", users=[john_something])
players = db.save(players) players = db.save(players)
players.users[0]["name"] = "fnord" players.users[0]["name"] = "fnord"
db.save(players) db.save(players)