I feel like noob ... I suggested because Aditus in Latin is "Access".
And my google search (Brazilian) don't show anything like this on 2 firsts pages. :( mirimQL mirim = small in "Tupi language" *Old Tupi* or *classical Tupi* is an extinct Tupian language <https://en.wikipedia.org/wiki/Tupian_languages> which was spoken by the native Tupi people <https://en.wikipedia.org/wiki/Tupi_people> of Brazil <https://en.wikipedia.org/wiki/Brazil>, mostly those who inhabited coastal regions in South <https://en.wikipedia.org/wiki/South_Brazil> and Southeast Brazil <https://en.wikipedia.org/wiki/Southeast_Brazil>. https://en.wikipedia.org/wiki/Tupi_language Em sexta-feira, 17 de maio de 2019 04:40:22 UTC-3, Massimo Di Pierro escreveu: > > I feel like I am missing something. This is the first entry from google: > https://en.wikipedia.org/wiki/Aditus_to_mastoid_antrum > > On Thursday, 16 May 2019 22:25:58 UTC-7, Daniel Guilhermino wrote: >> >> My 20 cents... Why not Aditus? >> >> Em terça-feira, 14 de maio de 2019 03:18:42 UTC-3, Massimo Di Pierro >> escreveu: >>> >>> You may have missed this but there is a new functionality in PyDAL that >>> allows you to create very powerful APIs. It is called DBAPI. >>> It is still not 100% stable but it is working and I could use some help >>> testing it. >>> web3py's equivalent of appadmin will be called dbadmin (90% done) and it >>> is based on DBAPI. >>> Even if primarily designed for web3py it works for web2py too and you >>> can find some preliminary examples below. >>> Hope it is self-explanatory. >>> >>> DBAPI EXAMPLES >>> >>> Inspired by GraphQL but not quite the same >>> >>> Less powerful but simpler to use >>> >>> Self descriptive (@model=True) and policy based (policy set serverside) >>> >>> Support complex queries like: >>> >>> - name.eq=Clark Kent >>> - name.ne=Clark Kent >>> - name.gt=Clark Kent >>> - name.lt=Clark Kent >>> - name.ge=Clark Kent >>> - name.le=Clark Kent >>> - name.startswith=Clark >>> - name.contains=Kent >>> - not.real_identity.name.contains=Wayne >>> - not.superhero.tag.superpower.description.eq=Flight >>> >>> Support de-normalization: >>> >>> - @lookup=real_identity >>> - @lookup=real_identity[name] >>> - @lookup=real_identity[name,job] >>> - @lookup=identity:real_identity[name,job] >>> - @lookup=identity!:real_identity[name,job] >>> - @lookup=superhero.tag >>> - @lookup=superhero.tag[strength] >>> - @lookup=superhero.tag[strength].superpower >>> - @lookup=superhero.tag[strength].superpower.description >>> >>> Fast. Even the most complex query is implemented with at most 2 selects >>> + 1 select for each denormalized link table >>> Example Model >>> >>> db.define_table( >>> 'person', >>> Field('name'), >>> Field('job')) >>> >>> db.define_table( >>> 'superhero', >>> Field('name'), >>> Field('real_identity', 'reference person')) >>> >>> db.define_table( >>> 'superpower', >>> Field('description')) >>> >>> db.define_table( >>> 'tag', >>> Field('superhero', 'reference superhero'), >>> Field('superpower', 'reference superpower'), >>> Field('strength', 'integer')) >>> >>> Example Controller >>> >>> from pydal.dbapi import DBAPI, Policy >>> policy = Policy() >>> policy.set('*', 'GET', authorize=lambda tablename, id, get_vars, >>> post_vars:True, allowed_patterns=['*']) >>> policy.set('*', 'PUT', authorize=lambda tablename, id, get_vars, >>> post_vars:False) >>> policy.set('*', 'POST', authorize=lambda tablename, id, get_vars, >>> post_vars:False) >>> policy.set('*', 'DELETE', authorize=lambda tablename, id, get_vars, >>> post_vars:False) >>> >>> def api(): >>> return DBAPI(db, policy)(request.method, request.args(0), >>> request.args(1), >>> request.get_vars, request.post_vars) >>> >>> Example GET URLs >>> /superheroes/default/api.json/superhero >>> >>> { >>> "count": 3, >>> "status": "success", >>> "code": 200, >>> "items": [ >>> { >>> "real_identity": 1, >>> "name": "Superman", >>> "id": 1 >>> }, >>> { >>> "real_identity": 2, >>> "name": "Spiderman", >>> "id": 2 >>> }, >>> { >>> "real_identity": 3, >>> "name": "Batman", >>> "id": 3 >>> } >>> ], >>> "timestamp": "2019-05-14T06:14:06.764966", >>> "api_version": "0.1" >>> } >>> >>> /superheroes/default/api.json/superhero&@model=true >>> >>> { >>> "status": "error", >>> "timestamp": "2019-05-14T06:14:06.997662", >>> "message": "Invalid table name: superhero_amp_@model=true", >>> "code": 400, >>> "api_version": "0.1" >>> } >>> >>> /superheroes/default/api.json/superhero?@lookup=real_identity >>> >>> { >>> "count": 3, >>> "status": "success", >>> "code": 200, >>> "items": [ >>> { >>> "real_identity": { >>> "name": "Clark Kent", >>> "job": "Journalist", >>> "id": 1 >>> }, >>> "name": "Superman", >>> "id": 1 >>> }, >>> { >>> "real_identity": { >>> "name": "Peter Park", >>> "job": "Photographer", >>> "id": 2 >>> }, >>> "name": "Spiderman", >>> "id": 2 >>> }, >>> { >>> "real_identity": { >>> "name": "Bruce Wayne", >>> "job": "CEO", >>> "id": 3 >>> }, >>> "name": "Batman", >>> "id": 3 >>> } >>> ], >>> "timestamp": "2019-05-14T06:14:06.931746", >>> "api_version": "0.1" >>> } >>> >>> /superheroes/default/api.json/superhero?@lookup=identity:real_identity >>> >>> { >>> "count": 3, >>> "status": "success", >>> "code": 200, >>> "items": [ >>> { >>> "real_identity": 1, >>> "name": "Superman", >>> "id": 1, >>> "identity": { >>> "name": "Clark Kent", >>> "job": "Journalist", >>> "id": 1 >>> } >>> }, >>> { >>> "real_identity": 2, >>> "name": "Spiderman", >>> "id": 2, >>> "identity": { >>> "name": "Peter Park", >>> "job": "Photographer", >>> "id": 2 >>> } >>> }, >>> { >>> "real_identity": 3, >>> "name": "Batman", >>> "id": 3, >>> "identity": { >>> "name": "Bruce Wayne", >>> "job": "CEO", >>> "id": 3 >>> } >>> } >>> ], >>> "timestamp": "2019-05-14T06:14:07.000183", >>> "api_version": "0.1" >>> } >>> >>> /superheroes/default/api.json/superhero?@lookup=identity!:real_identity[name,job] >>> >>> >>> >>> { >>> "count": 3, >>> "status": "success", >>> "code": 200, >>> "items": [ >>> { >>> "name": "Superman", >>> "identity_job": "Journalist", >>> "identity_name": "Clark Kent", >>> "id": 1 >>> }, >>> { >>> "name": "Spiderman", >>> "identity_job": "Photographer", >>> "identity_name": "Peter Park", >>> "id": 2 >>> }, >>> { >>> "name": "Batman", >>> "identity_job": "CEO", >>> "identity_name": "Bruce Wayne", >>> "id": 3 >>> } >>> ], >>> "timestamp": "2019-05-14T06:14:06.881501", >>> "api_version": "0.1" >>> } >>> >>> /superheroes/default/api.json/superhero?@lookup=superhero.tag >>> >>> { >>> "count": 3, >>> "status": "success", >>> "code": 200, >>> "items": [ >>> { >>> "real_identity": 1, >>> "name": "Superman", >>> "superhero.tag": [ >>> { >>> "strength": 100, >>> "superhero": 1, >>> "id": 1, >>> "superpower": 1 >>> }, >>> { >>> "strength": 100, >>> "superhero": 1, >>> "id": 2, >>> "superpower": 2 >>> }, >>> { >>> "strength": 100, >>> "superhero": 1, >>> "id": 3, >>> "superpower": 3 >>> }, >>> { >>> "strength": 100, >>> "superhero": 1, >>> "id": 4, >>> "superpower": 4 >>> } >>> ], >>> "id": 1 >>> }, >>> { >>> "real_identity": 2, >>> "name": "Spiderman", >>> "superhero.tag": [ >>> { >>> "strength": 50, >>> "superhero": 2, >>> "id": 5, >>> "superpower": 2 >>> }, >>> { >>> "strength": 75, >>> "superhero": 2, >>> "id": 6, >>> "superpower": 3 >>> }, >>> { >>> "strength": 10, >>> "superhero": 2, >>> "id": 7, >>> "superpower": 4 >>> } >>> ], >>> "id": 2 >>> }, >>> { >>> "real_identity": 3, >>> "name": "Batman", >>> "superhero.tag": [ >>> { >>> "strength": 80, >>> "superhero": 3, >>> "id": 8, >>> "superpower": 2 >>> }, >>> { >>> "strength": 20, >>> "superhero": 3, >>> "id": 9, >>> "superpower": 3 >>> }, >>> { >>> "strength": 70, >>> "superhero": 3, >>> "id": 10, >>> "superpower": 4 >>> } >>> ], >>> "id": 3 >>> } >>> ], >>> "timestamp": "2019-05-14T06:14:06.924036", >>> "api_version": "0.1" >>> } >>> >>> /superheroes/default/api.json/superhero?@lookup=superhero.tag.superpower >>> >>> { >>> "count": 3, >>> "status": "success", >>> "code": 200, >>> "items": [ >>> { >>> "real_identity": 1, >>> "name": "Superman", >>> "superhero.tag.superpower": [ >>> { >>> "strength": 100, >>> "superhero": 1, >>> "id": 1, >>> "superpower": { >>> "id": 1, >>> "description": "Flight" >>> } >>> }, >>> { >>> "strength": 100, >>> "superhero": 1, >>> "id": 2, >>> "superpower": { >>> "id": 2, >>> "description": "Strength" >>> } >>> }, >>> { >>> "strength": 100, >>> "superhero": 1, >>> "id": 3, >>> "superpower": { >>> "id": 3, >>> "description": "Speed" >>> } >>> }, >>> { >>> "strength": 100, >>> "superhero": 1, >>> "id": 4, >>> "superpower": { >>> "id": 4, >>> "description": "Durability" >>> } >>> } >>> ], >>> "id": 1 >>> }, >>> { >>> "real_identity": 2, >>> "name": "Spiderman", >>> "superhero.tag.superpower": [ >>> { >>> "strength": 50, >>> "superhero": 2, >>> "id": 5, >>> "superpower": { >>> "id": 2, >>> "description": "Strength" >>> } >>> }, >>> { >>> "strength": 75, >>> "superhero": 2, >>> "id": 6, >>> "superpower": { >>> "id": 3, >>> "description": "Speed" >>> } >>> }, >>> { >>> "strength": 10, >>> "superhero": 2, >>> "id": 7, >>> "superpower": { >>> "id": 4, >>> "description": "Durability" >>> } >>> } >>> ], >>> "id": 2 >>> }, >>> { >>> "real_identity": 3, >>> "name": "Batman", >>> "superhero.tag.superpower": [ >>> { >>> "strength": 80, >>> "superhero": 3, >>> "id": 8, >>> "superpower": { >>> "id": 2, >>> "description": "Strength" >>> } >>> }, >>> { >>> "strength": 20, >>> "superhero": 3, >>> "id": 9, >>> "superpower": { >>> "id": 3, >>> "description": "Speed" >>> } >>> }, >>> { >>> "strength": 70, >>> "superhero": 3, >>> "id": 10, >>> "superpower": { >>> "id": 4, >>> "description": "Durability" >>> } >>> } >>> ], >>> "id": 3 >>> } >>> ], >>> "timestamp": "2019-05-14T06:14:07.118823", >>> "api_version": "0.1" >>> } >>> >>> /superheroes/default/api.json/superhero?@lookup=powers:superhero.tag[strength].superpower[description] >>> >>> >>> >>> { >>> "count": 3, >>> "status": "success", >>> "code": 200, >>> "items": [ >>> { >>> "real_identity": 1, >>> "name": "Superman", >>> "powers": [ >>> { >>> "strength": 100, >>> "superpower": { >>> "description": "Flight" >>> } >>> }, >>> { >>> "strength": 100, >>> "superpower": { >>> "description": "Strength" >>> } >>> }, >>> { >>> "strength": 100, >>> "superpower": { >>> "description": "Speed" >>> } >>> }, >>> { >>> "strength": 100, >>> "superpower": { >>> "description": "Durability" >>> } >>> } >>> ], >>> "id": 1 >>> }, >>> { >>> "real_identity": 2, >>> "name": "Spiderman", >>> "powers": [ >>> { >>> "strength": 50, >>> "superpower": { >>> "description": "Strength" >>> } >>> }, >>> { >>> "strength": 75, >>> "superpower": { >>> "description": "Speed" >>> } >>> }, >>> { >>> "strength": 10, >>> "superpower": { >>> "description": "Durability" >>> } >>> } >>> ], >>> "id": 2 >>> }, >>> { >>> "real_identity": 3, >>> "name": "Batman", >>> "powers": [ >>> { >>> "strength": 80, >>> "superpower": { >>> "description": "Strength" >>> } >>> }, >>> { >>> "strength": 20, >>> "superpower": { >>> "description": "Speed" >>> } >>> }, >>> { >>> "strength": 70, >>> "superpower": { >>> "description": "Durability" >>> } >>> } >>> ], >>> "id": 3 >>> } >>> ], >>> "timestamp": "2019-05-14T06:14:07.260728", >>> "api_version": "0.1" >>> } >>> >>> /superheroes/default/api.json/superhero?@lookup=powers!:superhero.tag[strength].superpower[description] >>> >>> >>> >>> { >>> "count": 3, >>> "status": "success", >>> "code": 200, >>> "items": [ >>> { >>> "real_identity": 1, >>> "name": "Superman", >>> "powers": [ >>> { >>> "strength": 100, >>> "description": "Flight" >>> }, >>> { >>> "strength": 100, >>> "description": "Strength" >>> }, >>> { >>> "strength": 100, >>> "description": "Speed" >>> }, >>> { >>> "strength": 100, >>> "description": "Durability" >>> } >>> ], >>> "id": 1 >>> }, >>> { >>> "real_identity": 2, >>> "name": "Spiderman", >>> "powers": [ >>> { >>> "strength": 50, >>> "description": "Strength" >>> }, >>> { >>> "strength": 75, >>> "description": "Speed" >>> }, >>> { >>> "strength": 10, >>> "description": "Durability" >>> } >>> ], >>> "id": 2 >>> }, >>> { >>> "real_identity": 3, >>> "name": "Batman", >>> "powers": [ >>> { >>> "strength": 80, >>> "description": "Strength" >>> }, >>> { >>> "strength": 20, >>> "description": "Speed" >>> }, >>> { >>> "strength": 70, >>> "description": "Durability" >>> } >>> ], >>> "id": 3 >>> } >>> ], >>> "timestamp": "2019-05-14T06:14:07.252807", >>> "api_version": "0.1" >>> } >>> >>> /superheroes/default/api.json/superhero?@lookup=powers!:superhero.tag[strength].superpower[description],identity!:real_identity[name] >>> >>> >>> >>> { >>> "count": 3, >>> "status": "success", >>> "code": 200, >>> "items": [ >>> { >>> "name": "Superman", >>> "identity_name": "Clark Kent", >>> "powers": [ >>> { >>> "strength": 100, >>> "description": "Flight" >>> }, >>> { >>> "strength": 100, >>> "description": "Strength" >>> }, >>> { >>> "strength": 100, >>> "description": "Speed" >>> }, >>> { >>> "strength": 100, >>> "description": "Durability" >>> } >>> ], >>> "id": 1 >>> }, >>> { >>> "name": "Spiderman", >>> "identity_name": "Peter Park", >>> "powers": [ >>> { >>> "strength": 50, >>> "description": "Strength" >>> }, >>> { >>> "strength": 75, >>> "description": "Speed" >>> }, >>> { >>> "strength": 10, >>> "description": "Durability" >>> } >>> ], >>> "id": 2 >>> }, >>> { >>> "name": "Batman", >>> "identity_name": "Bruce Wayne", >>> "powers": [ >>> { >>> "strength": 80, >>> "description": "Strength" >>> }, >>> { >>> "strength": 20, >>> "description": "Speed" >>> }, >>> { >>> "strength": 70, >>> "description": "Durability" >>> } >>> ], >>> "id": 3 >>> } >>> ], >>> "timestamp": "2019-05-14T06:14:07.189899", >>> "api_version": "0.1" >>> } >>> >>> /superheroes/default/api.json/superhero?name.eq=Superman >>> >>> { >>> "count": 1, >>> "status": "success", >>> "code": 200, >>> "items": [ >>> { >>> "real_identity": 1, >>> "name": "Superman", >>> "id": 1 >>> } >>> ], >>> "timestamp": "2019-05-14T06:14:07.185643", >>> "api_version": "0.1" >>> } >>> >>> /superheroes/default/api.json/superhero?real_identity.name.eq=Clark Kent >>> >>> { >>> "count": 1, >>> "status": "success", >>> "code": 200, >>> "items": [ >>> { >>> "real_identity": 1, >>> "name": "Superman", >>> "id": 1 >>> } >>> ], >>> "timestamp": "2019-05-14T06:14:07.230685", >>> "api_version": "0.1" >>> } >>> >>> /superheroes/default/api.json/superhero?not.real_identity.name.eq=Clark >>> Kent >>> >>> { >>> "count": 2, >>> "status": "success", >>> "code": 200, >>> "items": [ >>> { >>> "real_identity": 2, >>> "name": "Spiderman", >>> "id": 2 >>> }, >>> { >>> "real_identity": 3, >>> "name": "Batman", >>> "id": 3 >>> } >>> ], >>> "timestamp": "2019-05-14T06:14:07.287187", >>> "api_version": "0.1" >>> } >>> >>> /superheroes/default/api.json/superhero?superhero.tag.strength.gt=80&@lookup=powers!:superhero.tag.superpower >>> >>> >>> >>> { >>> "status": "error", >>> "timestamp": "2019-05-14T06:14:07.296769", >>> "message": "'amp'", >>> "code": 400, >>> "api_version": "0.1" >>> } >>> >>> /superheroes/default/api.json/superhero?superhero.tag.superpower.description=Flight >>> >>> >>> >>> { >>> "count": 1, >>> "status": "success", >>> "code": 200, >>> "items": [ >>> { >>> "real_identity": 1, >>> "name": "Superman", >>> "id": 1 >>> } >>> ], >>> "timestamp": "2019-05-14T06:14:07.286926", >>> "api_version": "0.1" >>> } >>> >>> -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/web2py/8ab6aa34-8d31-40b0-93d9-1f63f7fba495%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.