Skip to content

Commit

Permalink
fix: Use markdown for documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
jefersondaniel committed Sep 13, 2023
1 parent 75e3b1b commit 1358799
Show file tree
Hide file tree
Showing 3 changed files with 74 additions and 95 deletions.
72 changes: 72 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# Pydantic Mongo

[![Build Status](https://github.com/jefersondaniel/pydantic-mongo/actions/workflows/test.yml/badge.svg)](https://github.com/jefersondaniel/pydantic-mongo/actions) [![Maintainability](https://api.codeclimate.com/v1/badges/5c92ea54aefa29f919cf/maintainability)](https://codeclimate.com/github/jefersondaniel/pydantic-mongo/maintainability) [![Test Coverage](https://api.codeclimate.com/v1/badges/5c92ea54aefa29f919cf/test_coverage)](https://codeclimate.com/github/jefersondaniel/pydantic-mongo/test_coverage) [![Version](https://badge.fury.io/py/pydantic-mongo.svg)](https://pypi.python.org/pypi/pydantic-mongo) [![Downloads](https://img.shields.io/pypi/dm/pydantic-mongo.svg)](https://pypi.python.org/pypi/pydantic-mongo)

Document object mapper for pydantic and pymongo

## Usage

### Install:

```bash
pip install pydantic-mongo
```

### Example Code

```python
from pydantic import BaseModel
from pydantic_mongo import AbstractRepository, ObjectIdField
from pymongo import MongoClient
from bson import ObjectId

class Foo(BaseModel):
count: int
size: float = None

class Bar(BaseModel):
apple = 'x'
banana = 'y'

class Spam(BaseModel):
id: ObjectIdField = None
foo: Foo
bars: List[Bar]

class SpamRepository(AbstractRepository[Spam]):
class Meta:
collection_name = 'spams'

client = MongoClient(os.environ["MONGODB_URL"])
database = client[os.environ["MONGODB_DATABASE"]]

spam = Spam(foo=Foo(count=1, size=1.0),bars=[Bar()])

spam_repository = SpamRepository(database=database)

# Insert / Update
spam_repository.save(spam)

# Insert / Update many items
spam_repository.save_many([spam])

# Delete
spam_repository.delete(spam)

# Find One By Id
result = spam_repository.find_one_by_id(spam.id)

# Find One By Id using string if the id attribute is a ObjectIdField
result = spam_repository.find_one_by_id(ObjectId('611827f2878b88b49ebb69fc'))

# Find One By Query
result = spam_repository.find_one_by({'foo.count': 1})

# Find By Query
results = spam_repository.find_by({'foo.count': {'$gte': 1}})

# Paginate using cursor based pagination
edges = spam_repository.paginate({'foo.count': {'$gte': 1}}, limit=1)
more_edges = spam_repository.paginate({'foo.count': {'$gte': 1}}, limit=1, after=edges[-1].cursor)
last_model = more_edges[-1].node
```
94 changes: 0 additions & 94 deletions README.rst

This file was deleted.

3 changes: 2 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from setuptools import setup

long_description = open("README.rst", "r").read()
long_description = open("README.md", "r").read()

package_root = os.path.abspath(os.path.dirname(__file__))

Expand All @@ -22,6 +22,7 @@
},
description="Document object mapper for pydantic and pymongo",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://github.com/jefersondaniel/pydantic-mongo",
author="Jeferson Daniel",
author_email="jeferson.daniel412@gmail.com",
Expand Down

0 comments on commit 1358799

Please sign in to comment.