You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I stumbled across your project this weekend I was immediately excited. I have been thinking about the need for this recently so it was great to find something that it looked like it solved all the use cases I have.
I was keen to get a simple POC together and have a play around but things are quite working. I had some questions that I hoped you wouldn't mind answering.
TLDR;
1 - Are you still maintaining the project? Should it be used for a production use case?
2 - Is there a way to pass a dict containing nested dicts and have those automatically create related models?
3 - is there a way to fetch an object from the cache and have it "inflate" all the related models into nested dicts?
Longer Example
Below is a test script I've put together to try and understand if how I interpreted limpyd to work is correct. What i was hoping would be possible was that you could simply instantiate the ProjectCache obj with a dict that contained keys for the related models. This would mean i'd simply store a project object and for any related keys it would "get or create" those models on the fly.
With a project object cached and each of it's related keys cached we would then be able to pull the project and all the related keys out in one go.
class BaseCache(related.RelatedModel):
database = main_database
abstract = True
id = fields.PKField()
created_at = fields.StringField()
updated_at = fields.StringField()
class CompanyRelationshipCache(BaseCache):
company = related.FKInstanceHashField("Company", related_name="customer")
other_party = related.FKInstanceHashField("Company", related_name="supplier")
class CompanyCache(BaseCache):
name = fields.InstanceHashField()
class UserCache(BaseCache):
email = fields.InstanceHashField()
name = fields.InstanceHashField()
title = fields.InstanceHashField()
profile_picture = fields.InstanceHashField()
timezone = fields.InstanceHashField()
state = fields.InstanceHashField()
company = related.FKInstanceHashField("CompanyCache")
class ActivityCache(BaseCache):
abstract = True
name = fields.InstanceHashField()
user = related.FKInstanceHashField("UserCache", related_name="activity_user")
owner = related.FKInstanceHashField("UserCache", related_name="activity_owner")
company_relationship = related.FKInstanceHashField("CompanyRelationshipCache")
class ProjectCache(ActivityCache):
status = fields.InstanceHashField()
if __name__ == "__main__":
try:
ProjectCache.get("project-id-1").delete()
except Exception:
pass
try:
CompanyCache.get("company-1").delete()
except Exception:
pass
try:
UserCache.get("user-1").delete()
except Exception:
pass
company_data = {"id": "company-1", "name": "Acme"}
user_data = {
"id": "user-1",
"name": "Mike Waites",
"email": "[email protected]",
"company": company_data,
"profile_picture": "https://img.acme.co/xxx.jpg",
"timezone": "Europe/London",
"title": "Job Title",
"state": "ACTIVE",
}
rel = {
"id": "rel-1",
"company": company_data,
"other_party": company_data,
}
project = {
"id": "project-id-1",
"user": user_data,
"owner": user_data,
"company_relationship": rel,
}
obj = ProjectCache(
id="project-id-1",
user=user_data,
owner=user_data,
company_relationship=rel,
name="Test Project",
)
assert obj.hgetall() == project
This doesn't work and fails with the error
File "/usr/local/lib/python3.6/dist-packages/limpyd/contrib/related.py", line 388, in func
args[0] = self.from_python(args[0])
IndexError: list index out of range
initially it seems that passing dicts to the constructor of the ProjectCache model doesn't work and the related models can't be created on the fly.
This time I create the related models up front and pass them to the ProjectCache
This time the ProjectCache object is created using refs to other models which doesn't error. The issue here however is that there isn't a way to "inflate" the object back into its full nested state.
Sorry for the massive dump of notes. I think the project is really great and I'm really hoping to use it but want to make sure I'm going in the right direction or what I'm trying to achieve would be possible before I go too far.
Thanks in advance.
The text was updated successfully, but these errors were encountered:
I'll read in detail your issue in a few day, no time for complex thinking today :)
But I read the first lines and so I can answer your 1/ : yes this project is still maintained (only by me) and yes you can use it in production, I do, heavily, and I have a client (I'm a freelancer) that use is too.
Thanks for the quick response. It's great to hear the project is still active. I'll look forward to hearing back from you about the best way to approach my use case.
Hey!
I stumbled across your project this weekend I was immediately excited. I have been thinking about the need for this recently so it was great to find something that it looked like it solved all the use cases I have.
I was keen to get a simple POC together and have a play around but things are quite working. I had some questions that I hoped you wouldn't mind answering.
TLDR;
1 - Are you still maintaining the project? Should it be used for a production use case?
2 - Is there a way to pass a dict containing nested dicts and have those automatically create related models?
3 - is there a way to fetch an object from the cache and have it "inflate" all the related models into nested dicts?
Longer Example
Below is a test script I've put together to try and understand if how I interpreted limpyd to work is correct. What i was hoping would be possible was that you could simply instantiate the ProjectCache obj with a dict that contained keys for the related models. This would mean i'd simply store a project object and for any related keys it would "get or create" those models on the fly.
With a project object cached and each of it's related keys cached we would then be able to pull the project and all the related keys out in one go.
This doesn't work and fails with the error
This time I create the related models up front and pass them to the ProjectCache
This time the ProjectCache object is created using refs to other models which doesn't error. The issue here however is that there isn't a way to "inflate" the object back into its full nested state.
Sorry for the massive dump of notes. I think the project is really great and I'm really hoping to use it but want to make sure I'm going in the right direction or what I'm trying to achieve would be possible before I go too far.
Thanks in advance.
The text was updated successfully, but these errors were encountered: