Skip to content

Commit 9c96433

Browse files
author
gh0st
committed
v0.2.1
1 parent 4e76fd3 commit 9c96433

File tree

4 files changed

+125
-65
lines changed

4 files changed

+125
-65
lines changed

README.md

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# python-redis-orm
22

3-
## **Python Redis ORM library that gives redis easy-to-use objectsand fields and speeds a developmet up, inspired by Django ORM**
3+
## **Python Redis ORM library that gives redis easy-to-use objects with fields and speeds a developmet up, inspired by Django ORM**
44

55
For one project, I needed to work with redis, but redis-py provides a minimum level of work with redis. I didn't find any Django-like ORM for redis, so I wrote this library, then there will be a port to Django.
66

@@ -59,6 +59,67 @@ All features:
5959

6060
[full_test.py](https://github.com/gh0st-work/python_redis_orm/blob/master/python_redis_orm/tests/full_test.py)
6161
```python
62+
import datetime
63+
import random
64+
from time import sleep
65+
66+
67+
from python_redis_orm.core import *
68+
69+
70+
def generate_token(chars_count):
71+
allowed_chars = 'QWERTYUIOPASDFGHJKLZXCVBNM1234567890'
72+
token = f'{"".join([random.choice(allowed_chars) for i in range(chars_count)])}'
73+
return token
74+
75+
76+
def generate_token_12_chars():
77+
return generate_token(12)
78+
79+
80+
class BotSession(RedisModel):
81+
session_token = RedisString(default=generate_token_12_chars)
82+
created = RedisDateTime(default=datetime.datetime.now)
83+
84+
85+
class TaskChallenge(RedisModel):
86+
bot_session = RedisForeignKey(model=BotSession)
87+
task_id = RedisNumber(default=0, null=False)
88+
status = RedisString(default='in_work', choices={
89+
'in_work': 'В работе',
90+
'completed': 'Завершён успешно',
91+
'completed_frozen_points': 'Завершён успешно, получил поинты в холде',
92+
'completed_points': 'Завершён успешно, получил поинты',
93+
'completed_decommissioning': 'Завершён успешно, поинты списаны',
94+
'failed_bot': 'Зафейлил бот',
95+
'failed_task_creator': 'Зафейлил создатель задания',
96+
}, null=False)
97+
account_checks_count = RedisNumber(default=0)
98+
created = RedisDateTime(default=datetime.datetime.now)
99+
100+
101+
class TtlCheckModel(RedisModel):
102+
redis_number_with_ttl = RedisNumber(default=0, null=False, ttl=5)
103+
104+
105+
class MetaTtlCheckModel(RedisModel):
106+
redis_number = RedisNumber(default=0, null=False)
107+
108+
class Meta:
109+
ttl = 5
110+
111+
112+
class DictCheckModel(RedisModel):
113+
redis_dict = RedisDict()
114+
115+
116+
class ListCheckModel(RedisModel):
117+
redis_list = RedisList()
118+
119+
120+
# class DjangoForeignKeyModel(RedisModel):
121+
# foreign_key = RedisDjangoForeignKey(model=Proxy)
122+
62123

63124
def get_redis_instance(connection_pool=None):
64125
REDIS_HOST = 'localhost'

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[tool.poetry]
22
name = "python-redis-orm"
3-
version = "0.2.0"
4-
description = "Python Redis ORM library that gives redis easy-to-use objectsand fields and speeds a developmet up, inspired by Django ORM"
3+
version = "0.2.1"
4+
description = "Python Redis ORM library that gives redis easy-to-use objects with fields and speeds a developmet up, inspired by Django ORM"
55
authors = ["Anton Nechaev <[email protected]>"]
66
readme = "README.md"
77
repository = "https://github.com/gh0st-work/python_redis_orm"

python_redis_orm/core.py

Lines changed: 0 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -740,65 +740,3 @@ def save(self):
740740
deserialized_instance = redis_root.get(self.__class__, id=self.id.value)[0]
741741
return deserialized_instance
742742

743-
744-
import datetime
745-
import random
746-
from time import sleep
747-
748-
749-
# from python_redis_orm.core import *
750-
751-
752-
def generate_token(chars_count):
753-
allowed_chars = 'QWERTYUIOPASDFGHJKLZXCVBNM1234567890'
754-
token = f'{"".join([random.choice(allowed_chars) for i in range(chars_count)])}'
755-
return token
756-
757-
758-
def generate_token_12_chars():
759-
return generate_token(12)
760-
761-
762-
class BotSession(RedisModel):
763-
session_token = RedisString(default=generate_token_12_chars)
764-
created = RedisDateTime(default=datetime.datetime.now)
765-
766-
767-
class TaskChallenge(RedisModel):
768-
bot_session = RedisForeignKey(model=BotSession)
769-
task_id = RedisNumber(default=0, null=False)
770-
status = RedisString(default='in_work', choices={
771-
'in_work': 'В работе',
772-
'completed': 'Завершён успешно',
773-
'completed_frozen_points': 'Завершён успешно, получил поинты в холде',
774-
'completed_points': 'Завершён успешно, получил поинты',
775-
'completed_decommissioning': 'Завершён успешно, поинты списаны',
776-
'failed_bot': 'Зафейлил бот',
777-
'failed_task_creator': 'Зафейлил создатель задания',
778-
}, null=False)
779-
account_checks_count = RedisNumber(default=0)
780-
created = RedisDateTime(default=datetime.datetime.now)
781-
782-
783-
class TtlCheckModel(RedisModel):
784-
redis_number_with_ttl = RedisNumber(default=0, null=False, ttl=5)
785-
786-
787-
class MetaTtlCheckModel(RedisModel):
788-
redis_number = RedisNumber(default=0, null=False)
789-
790-
class Meta:
791-
ttl = 5
792-
793-
794-
class DictCheckModel(RedisModel):
795-
redis_dict = RedisDict()
796-
797-
798-
class ListCheckModel(RedisModel):
799-
redis_list = RedisList()
800-
801-
802-
# class DjangoForeignKeyModel(RedisModel):
803-
# foreign_key = RedisDjangoForeignKey(model=Proxy)
804-

python_redis_orm/tests/full_test.py

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,64 @@
1+
import datetime
2+
import random
3+
from time import sleep
4+
5+
6+
from python_redis_orm.core import *
7+
8+
9+
def generate_token(chars_count):
10+
allowed_chars = 'QWERTYUIOPASDFGHJKLZXCVBNM1234567890'
11+
token = f'{"".join([random.choice(allowed_chars) for i in range(chars_count)])}'
12+
return token
13+
14+
15+
def generate_token_12_chars():
16+
return generate_token(12)
17+
18+
19+
class BotSession(RedisModel):
20+
session_token = RedisString(default=generate_token_12_chars)
21+
created = RedisDateTime(default=datetime.datetime.now)
22+
23+
24+
class TaskChallenge(RedisModel):
25+
bot_session = RedisForeignKey(model=BotSession)
26+
task_id = RedisNumber(default=0, null=False)
27+
status = RedisString(default='in_work', choices={
28+
'in_work': 'В работе',
29+
'completed': 'Завершён успешно',
30+
'completed_frozen_points': 'Завершён успешно, получил поинты в холде',
31+
'completed_points': 'Завершён успешно, получил поинты',
32+
'completed_decommissioning': 'Завершён успешно, поинты списаны',
33+
'failed_bot': 'Зафейлил бот',
34+
'failed_task_creator': 'Зафейлил создатель задания',
35+
}, null=False)
36+
account_checks_count = RedisNumber(default=0)
37+
created = RedisDateTime(default=datetime.datetime.now)
38+
39+
40+
class TtlCheckModel(RedisModel):
41+
redis_number_with_ttl = RedisNumber(default=0, null=False, ttl=5)
42+
43+
44+
class MetaTtlCheckModel(RedisModel):
45+
redis_number = RedisNumber(default=0, null=False)
46+
47+
class Meta:
48+
ttl = 5
49+
50+
51+
class DictCheckModel(RedisModel):
52+
redis_dict = RedisDict()
53+
54+
55+
class ListCheckModel(RedisModel):
56+
redis_list = RedisList()
57+
58+
59+
# class DjangoForeignKeyModel(RedisModel):
60+
# foreign_key = RedisDjangoForeignKey(model=Proxy)
61+
162

263
def get_redis_instance(connection_pool=None):
364
REDIS_HOST = 'localhost'

0 commit comments

Comments
 (0)