Hey
Gael's idea on using a class to define all methods for a service, gave me
another idea: add a light CRUD on the top of SQLAlchemy, in Cornice
I post it here and now because I think it overlaps a little bit Gael's
proposal
The idea would be to point to Cornice an SQLAlchemy mapping and have it
"published" as a set of RESTful APIs.
Example (see the __path__ attribute):
from sqlalchemy.ext.declarative import declarative_base, Column
from sqlalchemy import Integer, String, Text
from cornicedb import DataPublisher
_Base = declarative_base()
class Application(_Base, DataPublisher):
__tablename__ = 'applications'
__path__ = '/applications'
id = Column(Integer, primary_key=True)
user = Column(String(256), nullable=False)
collection = Column(String(256), nullable=False)
origin = Column(String(256), nullable=False)
last_modified = Column(Integer, nullable=False)
data = Column(Text)
This would generate automatically these REST-ish URIs:
- GET /applications - get the whole table, with batch options
- POST /applications - adds one or several rows
- DELETE /applications - adds one or several rows
- GET /applications/1 - get the row of id 1
- PUT /applications/1 - updates the row of id 1
- DELETE /applications/1 - delete the row of id 1
- etc..
Other features I have in mind:
- you can override or deactivate any one of these API by adding get()
post() etc, methods to the class
- you can write pre/post hooks, to add authentication etc
- you can define what we already have in cornice (validators, etc)
One pitfall: have the view and the data controller mixed in one single
class. If we start to have more code atop the data, it could become a mess
Cheers
Tarek
--
Tarek Ziadé | http://ziade.org
--
You received this message because you are subscribed to the Google Groups
"pylons-discuss" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/pylons-discuss?hl=en.