https://github.com/gnubyte/gitmixin
An SQL-Alchemy mixin to give records per row a git version tracked text
https://github.com/gnubyte/gitmixin
git python sql sqlalchemy
Last synced: about 1 year ago
JSON representation
An SQL-Alchemy mixin to give records per row a git version tracked text
- Host: GitHub
- URL: https://github.com/gnubyte/gitmixin
- Owner: gnubyte
- License: mit
- Created: 2021-06-21T17:34:29.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2021-06-22T18:59:45.000Z (almost 5 years ago)
- Last Synced: 2025-03-16T20:23:49.865Z (about 1 year ago)
- Topics: git, python, sql, sqlalchemy
- Language: Python
- Homepage:
- Size: 55.7 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Gitmixin
An SQLALchemy mixin that can track individual fields and turn them into git repos with simple advance forward, rewind back mechanisms.
[](https://gitmixin.readthedocs.io/en/latest/?)
[](https://pypi.org/project/gitmixin/)
[](https://github.com/gnubyte/gitmixin)
## Docs
Documentation on how to use the project as well as development for it can be found here. Check the projects section on Github speciifcally for the roadmap.
[Checkout our read the docs!](https://gitmixin.readthedocs.io/en/latest/?)
## Testing
Run tests:
`python3 tests/test_githandler.py`
## Getting started with GitMixin
A quick guide to using gitmixin
## Installation
First install gitmixin with pip
`pip install gitmixin`
or
`pip3 install gitmixin`
***
## Adding Gitmixin to your project
SQLALchemy projects typically have a database defined in models. In your models.py file or equivalent, import GitMixin near the top of the file.
`from gitmixin import GitMixin`
Then, in your SQLAlchemy class, inherit the GitMixin we just imported to give that model SQLAlchemy methods & allow it to access that models' event hooks.
`class Notes(Base, GitMixin):`
Finally in the model, add a new private attribute trackedfields, and let it equal a list of strings that you intend to track. The strings inside this list should be names of fields you want to track.
```
class Notes(Base, GitMixin):
__tablename__ = 'notes'
__trackedfields__ = ['notes', 'links']
id = Column(Integer, primary_key=True)
notes = Column(String(200))
links = Column(String(200))
```
### A finished example
```
# imports
from gitmixin import GitMixin
# SQLAlchemy
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
# ...
Base = declarative_base()
class Notes(Base, GitMixin):
__tablename__ = 'notes'
__trackedfields__ = ['notes', 'links']
id = Column(Integer, primary_key=True)
notes = Column(String(200))
links = Column(String(200))
```