<div dir="ltr">Dear all,<div><br></div><div>Yesterday I worked with Yann for the indexation on database and we have some feedback on rqlcontroller. When we insert an entity with rqlcontroller, the mandatory relations of this entity should be inserted as well, otherwise I will get error. It means each post already commit, or rollback when it fails. Maybe cubicweb team needs to make it stateless since it is RESTful Web services.</div>
<div><br></div><div>For example:<br><br></div><div>```</div><div><div>base_url = '<a href="http://localhost:8080">http://localhost:8080</a>'</div><div>r = requests.Session()</div><div>a = r.get(base_url + "?__login=admin&__password=admin")</div>
<div>print a.status_code</div></div><div>
<p style="margin:0px"><br></p><p style="margin:0px">url = base_url + "/rqlio/1.0"</p>
<p style="margin:0px"><br></p></div><div><div>args = [('INSERT Study ST: ST identifier "%s"' % study_id, {}),</div><div>              ('INSERT Subject SU: SU identifier "%s"' % subject_id, {}),</div>
<div>              ('SET SU related_studies ST WHERE ST eid %(t)s, SU eid %(u)s',</div><div>              {'t': '__r0', 'u':'__r1'}),]</div></div><div><br></div><div><div>a = requests.post(</div>
<div>                url,</div><div>                data=json.dumps(args),</div><div>                headers={'Content-Type': 'application/json'},</div><div>                verify=False,</div><div>                timeout=3)</div>
</div><div>```</div><div><br></div><div>However, this architecture makes it difficult to migrate from zmq/pyro to the rqlcontroller. While an entity will be inserted, and its complicated mandatory relations should be inserted in the meantime. We cannot first insert entities and then insert their relations. I need to put all entities and their relations in args which is difficult to read with '__r0' and '__r1'. In addition, we don't have rollback operation.</div>
<div><br></div><div>Suggestion:</div><div>It is better to make rqlcontroller like a similar architecture to the zmq/pyro method based on http session ID? </div><div>1: Easy migration from zmq/pyro to the rqlcontroller. </div>
<div>2: The rollback operation can easily restore database to a consistent state after erroneous operations are performed.</div><div><br></div><div>Don't hesitate to correct me if I am wrong.</div><div><br></div><div>
Regards,</div><div>Jinpeng</div></div>