generated
This commit is contained in:
parent
b6c33534f1
commit
284eb77bfe
5
.gitignore
vendored
5
.gitignore
vendored
@ -1,2 +1,7 @@
|
|||||||
__pycache__/
|
__pycache__/
|
||||||
ENV
|
ENV
|
||||||
|
|
||||||
|
# generated files
|
||||||
|
create.sql
|
||||||
|
methods.py
|
||||||
|
openapi.yaml
|
||||||
|
11
Dockerfile
11
Dockerfile
@ -18,7 +18,8 @@ RUN \
|
|||||||
pip3 install uwsgi && \
|
pip3 install uwsgi && \
|
||||||
pip3 install flask-cors && \
|
pip3 install flask-cors && \
|
||||||
pip3 install python-jose[cryptography] && \
|
pip3 install python-jose[cryptography] && \
|
||||||
pip3 install loguru
|
pip3 install loguru && \
|
||||||
|
pip3 install Cheetah3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -28,13 +29,19 @@ RUN \
|
|||||||
useradd -d ${APP_DIR} -u 1000 user
|
useradd -d ${APP_DIR} -u 1000 user
|
||||||
|
|
||||||
COPY *.py ${APP_DIR}/
|
COPY *.py ${APP_DIR}/
|
||||||
COPY openapi.yaml ${APP_DIR}/
|
COPY openapi.yaml.tmpl ${APP_DIR}/
|
||||||
|
COPY methods.py.tmpl ${APP_DIR}/
|
||||||
|
COPY schema.json ${APP_DIR}/
|
||||||
COPY server.ini ${CONF_DIR}/
|
COPY server.ini ${CONF_DIR}/
|
||||||
|
|
||||||
USER 1000:1000
|
USER 1000:1000
|
||||||
WORKDIR ${APP_DIR}
|
WORKDIR ${APP_DIR}
|
||||||
VOLUME ${CONF_DIR}
|
VOLUME ${CONF_DIR}
|
||||||
|
|
||||||
|
RUN \
|
||||||
|
python3 generate.py
|
||||||
|
|
||||||
|
|
||||||
EXPOSE 5000
|
EXPOSE 5000
|
||||||
EXPOSE 9191
|
EXPOSE 9191
|
||||||
|
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
from db import dbGetMany, dbGetOne
|
|
||||||
|
|
||||||
def getAccounts(user, token_info):
|
|
||||||
return dbGetMany(user, token_info, {"statement": "SELECT id, description FROM account_t", "params": ()})
|
|
||||||
|
|
||||||
def getAccount(user, token_info, accountId=None):
|
|
||||||
return dbGetOne(user, token_info, {"statement": "select id, description from account_t where id = %s", "params": (accountId, )})
|
|
||||||
|
|
35
create.sql.tmpl
Normal file
35
create.sql.tmpl
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
-- -----------------------------------------------------
|
||||||
|
-- THIS IS GENERATED CODE, DO NOT EDIT MANUALLY!
|
||||||
|
-- ALL CHANGES WILL BE LOST AFTER THE NEXT RUN
|
||||||
|
-- OF generate.py
|
||||||
|
-- -----------------------------------------------------
|
||||||
|
|
||||||
|
#for $table in $tables
|
||||||
|
CREATE TABLE ${table.name}_t (
|
||||||
|
id serial not null primary key
|
||||||
|
#for $column in $table.columns
|
||||||
|
,$column.name $column.sqltype #slurp
|
||||||
|
#if (('notnull' in $column) and $column.notnull)
|
||||||
|
not null #slurp
|
||||||
|
#end if
|
||||||
|
#if (('primarykey' in $column) and $column.primarykey)
|
||||||
|
primary key #slurp
|
||||||
|
#end if
|
||||||
|
#if (('foreignkey' in $column) and $column.foreignkey)
|
||||||
|
references ${column.name}_t (id) #slurp
|
||||||
|
#end if
|
||||||
|
#if ('default' in $column)
|
||||||
|
default $column.default #slurp
|
||||||
|
#end if
|
||||||
|
|
||||||
|
#end for
|
||||||
|
#if ('tableConstraints' in $table)
|
||||||
|
#for $tableConstraint in $table.tableConstraints
|
||||||
|
,$tableConstraint
|
||||||
|
#end for
|
||||||
|
#end if
|
||||||
|
);
|
||||||
|
|
||||||
|
#end for
|
||||||
|
|
||||||
|
|
38
generate.py
Normal file
38
generate.py
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
import json
|
||||||
|
from Cheetah.Template import Template
|
||||||
|
import glob
|
||||||
|
|
||||||
|
with open("schema.json") as schemaFile:
|
||||||
|
schema = json.load(schemaFile)
|
||||||
|
|
||||||
|
|
||||||
|
for table in schema["tables"]:
|
||||||
|
for column in table["columns"]:
|
||||||
|
if column["sqltype"] == 'serial':
|
||||||
|
column["apitype"] = 'integer'
|
||||||
|
column["jstype"] = 'number'
|
||||||
|
elif column["sqltype"] == 'integer':
|
||||||
|
column["apitype"] = 'integer'
|
||||||
|
column["jstype"] = 'number'
|
||||||
|
elif column["sqltype"] == 'date':
|
||||||
|
column["apitype"] = 'string'
|
||||||
|
column["jstype"] = 'string'
|
||||||
|
elif column["sqltype"] == 'timestamp':
|
||||||
|
column["apitype"] = 'string'
|
||||||
|
column["jstype"] = 'string'
|
||||||
|
elif column["sqltype"].startswith('varchar'):
|
||||||
|
column["apitype"] = 'string'
|
||||||
|
column["jstype"] = 'string'
|
||||||
|
elif column["sqltype"].startswith('numeric'):
|
||||||
|
column["apitype"] = 'number'
|
||||||
|
column["jstype"] = 'number'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
for f in glob.glob("*.tmpl"):
|
||||||
|
tmpl = Template(file=f, searchList=[schema])
|
||||||
|
with open(f[:-5], 'w') as outFile:
|
||||||
|
outFile.write(str(tmpl))
|
||||||
|
|
||||||
|
|
39
methods.py.tmpl
Normal file
39
methods.py.tmpl
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
#####################################################
|
||||||
|
### THIS IS GENERATED CODE, DO NOT EDIT MANUALLY! ###
|
||||||
|
### ALL CHANGES WILL BE LOST AFTER THE NEXT RUN ###
|
||||||
|
### OF generate.py ###
|
||||||
|
#####################################################
|
||||||
|
|
||||||
|
|
||||||
|
from db import dbGetMany, dbGetOne
|
||||||
|
|
||||||
|
#for $table in $tables
|
||||||
|
def get_${table.name}s(user, token_info):
|
||||||
|
return dbGetMany(user, token_info, {
|
||||||
|
"statement": """
|
||||||
|
SELECT
|
||||||
|
id
|
||||||
|
#for $column in $table.columns
|
||||||
|
,$column.name
|
||||||
|
#end for
|
||||||
|
FROM account_t
|
||||||
|
""",
|
||||||
|
"params": ()
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
def get_${table.name}(user, token_info, ${table.name}Id=None):
|
||||||
|
return dbGetOne(user, token_info, {
|
||||||
|
"statement": """
|
||||||
|
SELECT
|
||||||
|
id
|
||||||
|
#for $column in $table.columns
|
||||||
|
,$column.name
|
||||||
|
#end for
|
||||||
|
FROM account_t
|
||||||
|
WHERE id = %s
|
||||||
|
""",
|
||||||
|
"params": (${table.name}Id, )
|
||||||
|
}
|
||||||
|
)
|
||||||
|
#end for
|
577
openapi.yaml
577
openapi.yaml
@ -1,3 +1,6 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
openapi: 3.0.0
|
openapi: 3.0.0
|
||||||
info:
|
info:
|
||||||
title: hv2-api
|
title: hv2-api
|
||||||
@ -12,25 +15,11 @@ externalDocs:
|
|||||||
url: "https://home.hottis.de/dokuwiki/doku.php?id=hv2pub:externaldocs"
|
url: "https://home.hottis.de/dokuwiki/doku.php?id=hv2pub:externaldocs"
|
||||||
|
|
||||||
paths:
|
paths:
|
||||||
/v1/test:
|
|
||||||
get:
|
|
||||||
tags: [ "Test" ]
|
|
||||||
summary: Return secret string
|
|
||||||
operationId: auth.testToken
|
|
||||||
responses:
|
|
||||||
'200':
|
|
||||||
description: secret response
|
|
||||||
content:
|
|
||||||
'application/json':
|
|
||||||
schema:
|
|
||||||
$ref: '#/components/schemas/TestOutput'
|
|
||||||
security:
|
|
||||||
- jwt: ['secret']
|
|
||||||
/v1/accounts:
|
/v1/accounts:
|
||||||
get:
|
get:
|
||||||
tags: [ "Account" ]
|
tags: [ "account" ]
|
||||||
summary: Return all normalized accounts
|
summary: Return all normalized accounts
|
||||||
operationId: account.getAccounts
|
operationId: methods.get_accounts
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: accounts response
|
description: accounts response
|
||||||
@ -39,14 +28,14 @@ paths:
|
|||||||
schema:
|
schema:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
$ref: '#/components/schemas/Account'
|
$ref: '#/components/schemas/account'
|
||||||
security:
|
security:
|
||||||
- jwt: ['secret']
|
- jwt: ['secret']
|
||||||
/v1/accounts/{accountId}:
|
/v1/accounts/{accountId}:
|
||||||
get:
|
get:
|
||||||
tags: [ "Account" ]
|
tags: [ "account" ]
|
||||||
summary: Return the normalized account with given id
|
summary: Return the normalized account with given id
|
||||||
operationId: account.getAccount
|
operationId: methods.get_account
|
||||||
parameters:
|
parameters:
|
||||||
- name: accountId
|
- name: accountId
|
||||||
in: path
|
in: path
|
||||||
@ -55,42 +44,20 @@ paths:
|
|||||||
type: integer
|
type: integer
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: accounts response
|
description: account response
|
||||||
content:
|
content:
|
||||||
'application/json':
|
'application/json':
|
||||||
schema:
|
schema:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
$ref: '#/components/schemas/Account'
|
$ref: '#/components/schemas/account'
|
||||||
security:
|
security:
|
||||||
- jwt: ['secret']
|
- jwt: ['secret']
|
||||||
/v1/tenants:
|
/v1/tenants:
|
||||||
get:
|
get:
|
||||||
tags: [ "Tenant" ]
|
tags: [ "tenant" ]
|
||||||
summary: Return all normalized tenants
|
summary: Return all normalized tenants
|
||||||
operationId: tenant.getTenants
|
operationId: methods.get_tenants
|
||||||
responses:
|
|
||||||
'200':
|
|
||||||
description: tenant response
|
|
||||||
content:
|
|
||||||
'application/json':
|
|
||||||
schema:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
$ref: '#/components/schemas/Tenant'
|
|
||||||
security:
|
|
||||||
- jwt: ['secret']
|
|
||||||
/v1/tenants/{tenantId}:
|
|
||||||
get:
|
|
||||||
tags: [ "Tenant" ]
|
|
||||||
summary: Return the normalized tenant with given id
|
|
||||||
operationId: tenant.getTenant
|
|
||||||
parameters:
|
|
||||||
- name: tenantId
|
|
||||||
in: path
|
|
||||||
required: true
|
|
||||||
schema:
|
|
||||||
type: integer
|
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: tenants response
|
description: tenants response
|
||||||
@ -99,106 +66,90 @@ paths:
|
|||||||
schema:
|
schema:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
$ref: '#/components/schemas/Tenant'
|
$ref: '#/components/schemas/tenant'
|
||||||
security:
|
security:
|
||||||
- jwt: ['secret']
|
- jwt: ['secret']
|
||||||
/v1/commercialPremises:
|
/v1/tenants/{tenantId}:
|
||||||
get:
|
get:
|
||||||
tags: [ "CommercialPremise" ]
|
tags: [ "tenant" ]
|
||||||
summary: Return all normalized commercial premises
|
summary: Return the normalized tenant with given id
|
||||||
operationId: rentalObjects.getCommercialPremises
|
operationId: methods.get_tenant
|
||||||
responses:
|
|
||||||
'200':
|
|
||||||
description: commercial premise response
|
|
||||||
content:
|
|
||||||
'application/json':
|
|
||||||
schema:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
$ref: '#/components/schemas/CommercialPremise'
|
|
||||||
security:
|
|
||||||
- jwt: ['secret']
|
|
||||||
/v1/commercialPremises/{commercialPremiseId}:
|
|
||||||
get:
|
|
||||||
tags: [ "CommercialPremise" ]
|
|
||||||
summary: Return the normalized commercial premise with given id
|
|
||||||
operationId: rentalObjects.getCommercialPremise
|
|
||||||
parameters:
|
parameters:
|
||||||
- name: commercialPremiseId
|
- name: tenantId
|
||||||
in: path
|
in: path
|
||||||
required: true
|
required: true
|
||||||
schema:
|
schema:
|
||||||
type: integer
|
type: integer
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: commercial premise response
|
description: tenant response
|
||||||
content:
|
content:
|
||||||
'application/json':
|
'application/json':
|
||||||
schema:
|
schema:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
$ref: '#/components/schemas/CommercialPremise'
|
$ref: '#/components/schemas/tenant'
|
||||||
security:
|
security:
|
||||||
- jwt: ['secret']
|
- jwt: ['secret']
|
||||||
/v1/parkings:
|
/v1/premises:
|
||||||
get:
|
get:
|
||||||
tags: [ "Parking" ]
|
tags: [ "premise" ]
|
||||||
summary: Return all normalized parkings
|
summary: Return all normalized premises
|
||||||
operationId: rentalObjects.getParkings
|
operationId: methods.get_premises
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: parkings response
|
description: premises response
|
||||||
content:
|
content:
|
||||||
'application/json':
|
'application/json':
|
||||||
schema:
|
schema:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
$ref: '#/components/schemas/Parking'
|
$ref: '#/components/schemas/premise'
|
||||||
security:
|
security:
|
||||||
- jwt: ['secret']
|
- jwt: ['secret']
|
||||||
/v1/parkings/{parkingId}:
|
/v1/premises/{premiseId}:
|
||||||
get:
|
get:
|
||||||
tags: [ "Parking" ]
|
tags: [ "premise" ]
|
||||||
summary: Return the normalized parking with given id
|
summary: Return the normalized premise with given id
|
||||||
operationId: rentalObjects.getParking
|
operationId: methods.get_premise
|
||||||
parameters:
|
parameters:
|
||||||
- name: parkingId
|
- name: premiseId
|
||||||
in: path
|
in: path
|
||||||
required: true
|
required: true
|
||||||
schema:
|
schema:
|
||||||
type: integer
|
type: integer
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: parking response
|
description: premise response
|
||||||
content:
|
content:
|
||||||
'application/json':
|
'application/json':
|
||||||
schema:
|
schema:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
$ref: '#/components/schemas/Parking'
|
$ref: '#/components/schemas/premise'
|
||||||
security:
|
security:
|
||||||
- jwt: ['secret']
|
- jwt: ['secret']
|
||||||
/v1/flats:
|
/v1/flats:
|
||||||
get:
|
get:
|
||||||
tags: [ "Flat" ]
|
tags: [ "flat" ]
|
||||||
summary: Return all normalized flats
|
summary: Return all normalized flats
|
||||||
operationId: rentalObjects.getFlats
|
operationId: methods.get_flats
|
||||||
responses:
|
responses:
|
||||||
'200':
|
'200':
|
||||||
description: flat response
|
description: flats response
|
||||||
content:
|
content:
|
||||||
'application/json':
|
'application/json':
|
||||||
schema:
|
schema:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
$ref: '#/components/schemas/Flat'
|
$ref: '#/components/schemas/flat'
|
||||||
security:
|
security:
|
||||||
- jwt: ['secret']
|
- jwt: ['secret']
|
||||||
/v1/flats/{flatId}:
|
/v1/flats/{flatId}:
|
||||||
get:
|
get:
|
||||||
tags: [ "Flat" ]
|
tags: [ "flat" ]
|
||||||
summary: Return the normalized flat with given id
|
summary: Return the normalized flat with given id
|
||||||
operationId: rentalObjects.getFlat
|
operationId: methods.get_flat
|
||||||
parameters:
|
parameters:
|
||||||
- name: flatId
|
- name: flatId
|
||||||
in: path
|
in: path
|
||||||
@ -213,7 +164,311 @@ paths:
|
|||||||
schema:
|
schema:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
$ref: '#/components/schemas/Flat'
|
$ref: '#/components/schemas/flat'
|
||||||
|
security:
|
||||||
|
- jwt: ['secret']
|
||||||
|
/v1/overhead_advances:
|
||||||
|
get:
|
||||||
|
tags: [ "overhead_advance" ]
|
||||||
|
summary: Return all normalized overhead_advances
|
||||||
|
operationId: methods.get_overhead_advances
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: overhead_advances response
|
||||||
|
content:
|
||||||
|
'application/json':
|
||||||
|
schema:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/overhead_advance'
|
||||||
|
security:
|
||||||
|
- jwt: ['secret']
|
||||||
|
/v1/overhead_advances/{overhead_advanceId}:
|
||||||
|
get:
|
||||||
|
tags: [ "overhead_advance" ]
|
||||||
|
summary: Return the normalized overhead_advance with given id
|
||||||
|
operationId: methods.get_overhead_advance
|
||||||
|
parameters:
|
||||||
|
- name: overhead_advanceId
|
||||||
|
in: path
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: overhead_advance response
|
||||||
|
content:
|
||||||
|
'application/json':
|
||||||
|
schema:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/overhead_advance'
|
||||||
|
security:
|
||||||
|
- jwt: ['secret']
|
||||||
|
/v1/overhead_advance_flat_mappings:
|
||||||
|
get:
|
||||||
|
tags: [ "overhead_advance_flat_mapping" ]
|
||||||
|
summary: Return all normalized overhead_advance_flat_mappings
|
||||||
|
operationId: methods.get_overhead_advance_flat_mappings
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: overhead_advance_flat_mappings response
|
||||||
|
content:
|
||||||
|
'application/json':
|
||||||
|
schema:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/overhead_advance_flat_mapping'
|
||||||
|
security:
|
||||||
|
- jwt: ['secret']
|
||||||
|
/v1/overhead_advance_flat_mappings/{overhead_advance_flat_mappingId}:
|
||||||
|
get:
|
||||||
|
tags: [ "overhead_advance_flat_mapping" ]
|
||||||
|
summary: Return the normalized overhead_advance_flat_mapping with given id
|
||||||
|
operationId: methods.get_overhead_advance_flat_mapping
|
||||||
|
parameters:
|
||||||
|
- name: overhead_advance_flat_mappingId
|
||||||
|
in: path
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: overhead_advance_flat_mapping response
|
||||||
|
content:
|
||||||
|
'application/json':
|
||||||
|
schema:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/overhead_advance_flat_mapping'
|
||||||
|
security:
|
||||||
|
- jwt: ['secret']
|
||||||
|
/v1/parkings:
|
||||||
|
get:
|
||||||
|
tags: [ "parking" ]
|
||||||
|
summary: Return all normalized parkings
|
||||||
|
operationId: methods.get_parkings
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: parkings response
|
||||||
|
content:
|
||||||
|
'application/json':
|
||||||
|
schema:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/parking'
|
||||||
|
security:
|
||||||
|
- jwt: ['secret']
|
||||||
|
/v1/parkings/{parkingId}:
|
||||||
|
get:
|
||||||
|
tags: [ "parking" ]
|
||||||
|
summary: Return the normalized parking with given id
|
||||||
|
operationId: methods.get_parking
|
||||||
|
parameters:
|
||||||
|
- name: parkingId
|
||||||
|
in: path
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: parking response
|
||||||
|
content:
|
||||||
|
'application/json':
|
||||||
|
schema:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/parking'
|
||||||
|
security:
|
||||||
|
- jwt: ['secret']
|
||||||
|
/v1/commercial_premises:
|
||||||
|
get:
|
||||||
|
tags: [ "commercial_premise" ]
|
||||||
|
summary: Return all normalized commercial_premises
|
||||||
|
operationId: methods.get_commercial_premises
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: commercial_premises response
|
||||||
|
content:
|
||||||
|
'application/json':
|
||||||
|
schema:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/commercial_premise'
|
||||||
|
security:
|
||||||
|
- jwt: ['secret']
|
||||||
|
/v1/commercial_premises/{commercial_premiseId}:
|
||||||
|
get:
|
||||||
|
tags: [ "commercial_premise" ]
|
||||||
|
summary: Return the normalized commercial_premise with given id
|
||||||
|
operationId: methods.get_commercial_premise
|
||||||
|
parameters:
|
||||||
|
- name: commercial_premiseId
|
||||||
|
in: path
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: commercial_premise response
|
||||||
|
content:
|
||||||
|
'application/json':
|
||||||
|
schema:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/commercial_premise'
|
||||||
|
security:
|
||||||
|
- jwt: ['secret']
|
||||||
|
/v1/tenancys:
|
||||||
|
get:
|
||||||
|
tags: [ "tenancy" ]
|
||||||
|
summary: Return all normalized tenancys
|
||||||
|
operationId: methods.get_tenancys
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: tenancys response
|
||||||
|
content:
|
||||||
|
'application/json':
|
||||||
|
schema:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/tenancy'
|
||||||
|
security:
|
||||||
|
- jwt: ['secret']
|
||||||
|
/v1/tenancys/{tenancyId}:
|
||||||
|
get:
|
||||||
|
tags: [ "tenancy" ]
|
||||||
|
summary: Return the normalized tenancy with given id
|
||||||
|
operationId: methods.get_tenancy
|
||||||
|
parameters:
|
||||||
|
- name: tenancyId
|
||||||
|
in: path
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: tenancy response
|
||||||
|
content:
|
||||||
|
'application/json':
|
||||||
|
schema:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/tenancy'
|
||||||
|
security:
|
||||||
|
- jwt: ['secret']
|
||||||
|
/v1/fees:
|
||||||
|
get:
|
||||||
|
tags: [ "fee" ]
|
||||||
|
summary: Return all normalized fees
|
||||||
|
operationId: methods.get_fees
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: fees response
|
||||||
|
content:
|
||||||
|
'application/json':
|
||||||
|
schema:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/fee'
|
||||||
|
security:
|
||||||
|
- jwt: ['secret']
|
||||||
|
/v1/fees/{feeId}:
|
||||||
|
get:
|
||||||
|
tags: [ "fee" ]
|
||||||
|
summary: Return the normalized fee with given id
|
||||||
|
operationId: methods.get_fee
|
||||||
|
parameters:
|
||||||
|
- name: feeId
|
||||||
|
in: path
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: fee response
|
||||||
|
content:
|
||||||
|
'application/json':
|
||||||
|
schema:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/fee'
|
||||||
|
security:
|
||||||
|
- jwt: ['secret']
|
||||||
|
/v1/tenancy_fee_mappings:
|
||||||
|
get:
|
||||||
|
tags: [ "tenancy_fee_mapping" ]
|
||||||
|
summary: Return all normalized tenancy_fee_mappings
|
||||||
|
operationId: methods.get_tenancy_fee_mappings
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: tenancy_fee_mappings response
|
||||||
|
content:
|
||||||
|
'application/json':
|
||||||
|
schema:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/tenancy_fee_mapping'
|
||||||
|
security:
|
||||||
|
- jwt: ['secret']
|
||||||
|
/v1/tenancy_fee_mappings/{tenancy_fee_mappingId}:
|
||||||
|
get:
|
||||||
|
tags: [ "tenancy_fee_mapping" ]
|
||||||
|
summary: Return the normalized tenancy_fee_mapping with given id
|
||||||
|
operationId: methods.get_tenancy_fee_mapping
|
||||||
|
parameters:
|
||||||
|
- name: tenancy_fee_mappingId
|
||||||
|
in: path
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: tenancy_fee_mapping response
|
||||||
|
content:
|
||||||
|
'application/json':
|
||||||
|
schema:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/tenancy_fee_mapping'
|
||||||
|
security:
|
||||||
|
- jwt: ['secret']
|
||||||
|
/v1/account_entrys:
|
||||||
|
get:
|
||||||
|
tags: [ "account_entry" ]
|
||||||
|
summary: Return all normalized account_entrys
|
||||||
|
operationId: methods.get_account_entrys
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: account_entrys response
|
||||||
|
content:
|
||||||
|
'application/json':
|
||||||
|
schema:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/account_entry'
|
||||||
|
security:
|
||||||
|
- jwt: ['secret']
|
||||||
|
/v1/account_entrys/{account_entryId}:
|
||||||
|
get:
|
||||||
|
tags: [ "account_entry" ]
|
||||||
|
summary: Return the normalized account_entry with given id
|
||||||
|
operationId: methods.get_account_entry
|
||||||
|
parameters:
|
||||||
|
- name: account_entryId
|
||||||
|
in: path
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: account_entry response
|
||||||
|
content:
|
||||||
|
'application/json':
|
||||||
|
schema:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: '#/components/schemas/account_entry'
|
||||||
security:
|
security:
|
||||||
- jwt: ['secret']
|
- jwt: ['secret']
|
||||||
|
|
||||||
@ -225,24 +480,16 @@ components:
|
|||||||
bearerFormat: JWT
|
bearerFormat: JWT
|
||||||
x-bearerInfoFunc: auth.decodeToken
|
x-bearerInfoFunc: auth.decodeToken
|
||||||
schemas:
|
schemas:
|
||||||
TestOutput:
|
account:
|
||||||
description: Test Output
|
description: account
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
message:
|
|
||||||
type: string
|
|
||||||
details:
|
|
||||||
type: string
|
|
||||||
Account:
|
|
||||||
description: Account
|
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
id:
|
id:
|
||||||
type: integer
|
type: integer
|
||||||
description:
|
description:
|
||||||
type: string
|
type: string
|
||||||
Tenant:
|
tenant:
|
||||||
description: Tenant
|
description: tenant
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
id:
|
id:
|
||||||
@ -271,28 +518,22 @@ components:
|
|||||||
type: string
|
type: string
|
||||||
account:
|
account:
|
||||||
type: integer
|
type: integer
|
||||||
CommercialPremise:
|
premise:
|
||||||
description: CommercialPremise
|
description: premise
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
id:
|
id:
|
||||||
type: integer
|
type: integer
|
||||||
description:
|
description:
|
||||||
type: string
|
type: string
|
||||||
premise:
|
street:
|
||||||
type: integer
|
|
||||||
Parking:
|
|
||||||
description: Parking
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
id:
|
|
||||||
type: integer
|
|
||||||
description:
|
|
||||||
type: string
|
type: string
|
||||||
premise:
|
zip:
|
||||||
type: integer
|
type: string
|
||||||
Flat:
|
city:
|
||||||
description: Flat
|
type: string
|
||||||
|
flat:
|
||||||
|
description: flat
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
id:
|
id:
|
||||||
@ -305,3 +546,107 @@ components:
|
|||||||
type: number
|
type: number
|
||||||
flat_no:
|
flat_no:
|
||||||
type: integer
|
type: integer
|
||||||
|
overhead_advance:
|
||||||
|
description: overhead_advance
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
type: integer
|
||||||
|
description:
|
||||||
|
type: string
|
||||||
|
amount:
|
||||||
|
type: number
|
||||||
|
startdate:
|
||||||
|
type: string
|
||||||
|
enddate:
|
||||||
|
type: string
|
||||||
|
overhead_advance_flat_mapping:
|
||||||
|
description: overhead_advance_flat_mapping
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
type: integer
|
||||||
|
overhead_advance:
|
||||||
|
type: integer
|
||||||
|
flat:
|
||||||
|
type: integer
|
||||||
|
parking:
|
||||||
|
description: parking
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
type: integer
|
||||||
|
description:
|
||||||
|
type: string
|
||||||
|
premise:
|
||||||
|
type: integer
|
||||||
|
commercial_premise:
|
||||||
|
description: commercial_premise
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
type: integer
|
||||||
|
description:
|
||||||
|
type: string
|
||||||
|
premise:
|
||||||
|
type: integer
|
||||||
|
tenancy:
|
||||||
|
description: tenancy
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
type: integer
|
||||||
|
description:
|
||||||
|
type: string
|
||||||
|
tenant:
|
||||||
|
type: integer
|
||||||
|
flat:
|
||||||
|
type: integer
|
||||||
|
parking:
|
||||||
|
type: integer
|
||||||
|
commercial_premise:
|
||||||
|
type: integer
|
||||||
|
startdate:
|
||||||
|
type: string
|
||||||
|
enddate:
|
||||||
|
type: string
|
||||||
|
fee:
|
||||||
|
description: fee
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
type: integer
|
||||||
|
description:
|
||||||
|
type: string
|
||||||
|
amount:
|
||||||
|
type: number
|
||||||
|
fee_type:
|
||||||
|
type: string
|
||||||
|
startdate:
|
||||||
|
type: string
|
||||||
|
enddate:
|
||||||
|
type: string
|
||||||
|
tenancy_fee_mapping:
|
||||||
|
description: tenancy_fee_mapping
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
type: integer
|
||||||
|
tenancy:
|
||||||
|
type: integer
|
||||||
|
fee:
|
||||||
|
type: integer
|
||||||
|
account_entry:
|
||||||
|
description: account_entry
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
type: integer
|
||||||
|
description:
|
||||||
|
type: string
|
||||||
|
account:
|
||||||
|
type: integer
|
||||||
|
created_at:
|
||||||
|
type: string
|
||||||
|
amount:
|
||||||
|
type: number
|
||||||
|
83
openapi.yaml.tmpl
Normal file
83
openapi.yaml.tmpl
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
#####################################################
|
||||||
|
### THIS IS GENERATED CODE, DO NOT EDIT MANUALLY! ###
|
||||||
|
### ALL CHANGES WILL BE LOST AFTER THE NEXT RUN ###
|
||||||
|
### OF generate.py ###
|
||||||
|
#####################################################
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
openapi: 3.0.0
|
||||||
|
info:
|
||||||
|
title: hv2-api
|
||||||
|
version: "1"
|
||||||
|
description: "REST-API for the Nober Grundbesitz GbR Hausverwaltungs-Software"
|
||||||
|
termsOfService: "https://home.hottis.de/dokuwiki/doku.php?id=hv2pub:termsofuse"
|
||||||
|
contact:
|
||||||
|
name: "Wolfgang Hottgenroth"
|
||||||
|
email: "wolfgang.hottgenroth@icloud.com"
|
||||||
|
externalDocs:
|
||||||
|
description: "Find more details here"
|
||||||
|
url: "https://home.hottis.de/dokuwiki/doku.php?id=hv2pub:externaldocs"
|
||||||
|
|
||||||
|
paths:
|
||||||
|
#for $table in $tables
|
||||||
|
/v1/${table.name}s:
|
||||||
|
get:
|
||||||
|
tags: [ "$table.name" ]
|
||||||
|
summary: Return all normalized ${table.name}s
|
||||||
|
operationId: methods.get_${table.name}s
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: ${table.name}s response
|
||||||
|
content:
|
||||||
|
'application/json':
|
||||||
|
schema:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
\$ref: '#/components/schemas/$table.name'
|
||||||
|
security:
|
||||||
|
- jwt: ['secret']
|
||||||
|
/v1/${table.name}s/{${table.name}Id}:
|
||||||
|
get:
|
||||||
|
tags: [ "$table.name" ]
|
||||||
|
summary: Return the normalized $table.name with given id
|
||||||
|
operationId: methods.get_$table.name
|
||||||
|
parameters:
|
||||||
|
- name: ${table.name}Id
|
||||||
|
in: path
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: $table.name response
|
||||||
|
content:
|
||||||
|
'application/json':
|
||||||
|
schema:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
\$ref: '#/components/schemas/$table.name'
|
||||||
|
security:
|
||||||
|
- jwt: ['secret']
|
||||||
|
#end for
|
||||||
|
|
||||||
|
components:
|
||||||
|
securitySchemes:
|
||||||
|
jwt:
|
||||||
|
type: http
|
||||||
|
scheme: bearer
|
||||||
|
bearerFormat: JWT
|
||||||
|
x-bearerInfoFunc: auth.decodeToken
|
||||||
|
schemas:
|
||||||
|
#for $table in $tables
|
||||||
|
$table.name:
|
||||||
|
description: $table.name
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
type: integer
|
||||||
|
#for $column in $table.columns
|
||||||
|
$column.name:
|
||||||
|
type: $column.apitype
|
||||||
|
#end for
|
||||||
|
#end for
|
@ -1,71 +0,0 @@
|
|||||||
from db import dbGetMany, dbGetOne
|
|
||||||
|
|
||||||
def getCommercialPremises(user, token_info):
|
|
||||||
return dbGetMany(user, token_info,
|
|
||||||
{
|
|
||||||
"statement": """
|
|
||||||
SELECT id, description, premise
|
|
||||||
FROM commercial_premise_t
|
|
||||||
""",
|
|
||||||
"params": ()
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
def getCommercialPremise(user, token_info, commercialPremiseId=None):
|
|
||||||
return dbGetOne(user, token_info,
|
|
||||||
{
|
|
||||||
"statement": """
|
|
||||||
SELECT id, description, premise
|
|
||||||
FROM commercial_premise_t
|
|
||||||
WHERE id = %s
|
|
||||||
""",
|
|
||||||
"params": (commercialPremiseId, )
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
def getFlats(user, token_info):
|
|
||||||
return dbGetMany(user, token_info,
|
|
||||||
{
|
|
||||||
"statement": """
|
|
||||||
SELECT id, description, premise, area, flat_no
|
|
||||||
FROM flat_t
|
|
||||||
""",
|
|
||||||
"params": ()
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
def getFlat(user, token_info, flatId=None):
|
|
||||||
return dbGetOne(user, token_info,
|
|
||||||
{
|
|
||||||
"statement": """
|
|
||||||
SELECT id, description, premise, area, flat_no
|
|
||||||
FROM flat_t
|
|
||||||
WHERE id = %s
|
|
||||||
""",
|
|
||||||
"params": (flatId, )
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
def getParking(user, token_info):
|
|
||||||
return dbGetMany(user, token_info,
|
|
||||||
{
|
|
||||||
"statement": """
|
|
||||||
SELECT id, description, premise
|
|
||||||
FROM parking_t
|
|
||||||
""",
|
|
||||||
"params": ()
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
def getParking(user, token_info, parkingId=None):
|
|
||||||
return dbGetOne(user, token_info,
|
|
||||||
{
|
|
||||||
"statement": """
|
|
||||||
SELECT id, description, premise
|
|
||||||
FROM parking_t
|
|
||||||
WHERE id = %s
|
|
||||||
""",
|
|
||||||
"params": (parkingId, )
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
119
schema.json
Normal file
119
schema.json
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
{
|
||||||
|
"tables": [
|
||||||
|
{
|
||||||
|
"name": "account",
|
||||||
|
"columns": [
|
||||||
|
{ "name": "description", "sqltype": "varchar(128)", "notnull": true }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tenant",
|
||||||
|
"columns": [
|
||||||
|
{ "name": "salutation", "sqltype": "varchar(128)" },
|
||||||
|
{ "name": "firstname", "sqltype": "varchar(128)" },
|
||||||
|
{ "name": "lastname", "sqltype": "varchar(128)" },
|
||||||
|
{ "name": "address1", "sqltype": "varchar(128)" },
|
||||||
|
{ "name": "address2", "sqltype": "varchar(128)" },
|
||||||
|
{ "name": "address3", "sqltype": "varchar(128)" },
|
||||||
|
{ "name": "zip", "sqltype": "varchar(10)" },
|
||||||
|
{ "name": "city", "sqltype": "varchar(128)" },
|
||||||
|
{ "name": "phone1", "sqltype": "varchar(64)" },
|
||||||
|
{ "name": "phone2", "sqltype": "varchar(64)" },
|
||||||
|
{ "name": "iban", "sqltype": "varchar(64)" },
|
||||||
|
{ "name": "account", "sqltype": "integer", "notnull": true, "foreignkey": true }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "premise",
|
||||||
|
"columns": [
|
||||||
|
{ "name": "description", "sqltype": "varchar(128)" },
|
||||||
|
{ "name": "street", "sqltype": "varchar(128)", "notnull": true },
|
||||||
|
{ "name": "zip", "sqltype": "varchar(10)", "notnull": true },
|
||||||
|
{ "name": "city", "sqltype": "varchar(128)", "notnull": true }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "flat",
|
||||||
|
"columns": [
|
||||||
|
{ "name": "description", "sqltype": "varchar(128)" },
|
||||||
|
{ "name": "premise", "sqltype": "integer", "foreignkey": true },
|
||||||
|
{ "name": "area", "sqltype": "numeric(10,2)", "notnull": true },
|
||||||
|
{ "name": "flat_no", "sqltype": "integer" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "overhead_advance",
|
||||||
|
"columns": [
|
||||||
|
{ "name": "description", "sqltype": "varchar(128)" },
|
||||||
|
{ "name": "amount", "sqltype": "numeric(10,4)", "notnull": true },
|
||||||
|
{ "name": "startdate", "sqltype": "date" },
|
||||||
|
{ "name": "enddate", "sqltype": "date" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "overhead_advance_flat_mapping",
|
||||||
|
"columns": [
|
||||||
|
{ "name": "overhead_advance", "sqltype": "integer", "notnull": true, "foreignkey": true },
|
||||||
|
{ "name": "flat", "sqltype": "integer", "notnull": true, "foreignkey": true }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "parking",
|
||||||
|
"columns": [
|
||||||
|
{ "name": "description", "sqltype": "varchar(128)" },
|
||||||
|
{ "name": "premise", "sqltype": "integer", "foreignkey": true }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "commercial_premise",
|
||||||
|
"columns": [
|
||||||
|
{ "name": "description", "sqltype": "varchar(128)" },
|
||||||
|
{ "name": "premise", "sqltype": "integer", "foreignkey": true }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tenancy",
|
||||||
|
"columns": [
|
||||||
|
{ "name": "description", "sqltype": "varchar(128)" },
|
||||||
|
{ "name": "tenant", "sqltype": "integer", "notnull": true, "foreignkey": true },
|
||||||
|
{ "name": "flat", "sqltype": "integer", "notnull": false, "foreignkey": true },
|
||||||
|
{ "name": "parking", "sqltype": "integer", "notnull": false, "foreignkey": true },
|
||||||
|
{ "name": "commercial_premise", "sqltype": "integer", "notnull": false, "foreignkey": true },
|
||||||
|
{ "name": "startdate", "sqltype": "date", "notnull": true },
|
||||||
|
{ "name": "enddate", "sqltype": "date", "notnull": false }
|
||||||
|
],
|
||||||
|
"tableConstraints": [
|
||||||
|
"constraint tenancy_only_one_object check ((flat is not null and parking is null and commercial_premise is null) or (flat is null and parking is not null and commercial_premise is null) or (flat is null and parking is null and commercial_premise is not null))"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "fee",
|
||||||
|
"columns": [
|
||||||
|
{ "name": "description", "sqltype": "varchar(128)" },
|
||||||
|
{ "name": "amount", "sqltype": "numeric(10,2)", "notnull": true },
|
||||||
|
{ "name": "fee_type", "sqltype": "varchar(10)", "notnull": true },
|
||||||
|
{ "name": "startdate", "sqltype": "date" },
|
||||||
|
{ "name": "enddate", "sqltype": "date" }
|
||||||
|
],
|
||||||
|
"tableConstraints": [
|
||||||
|
"constraint fee_fee_type check (fee_type = 'per_area' or fee_type = 'total')"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "tenancy_fee_mapping",
|
||||||
|
"columns": [
|
||||||
|
{ "name": "tenancy", "sqltype": "integer", "notnull": true, "foreignkey": true },
|
||||||
|
{ "name": "fee", "sqltype": "integer", "notnull": true, "foreignkey": true }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "account_entry",
|
||||||
|
"columns": [
|
||||||
|
{ "name": "description", "sqltype": "varchar(128)", "notnull": true },
|
||||||
|
{ "name": "account", "sqltype": "integer", "notnull": true, "foreignkey": true },
|
||||||
|
{ "name": "created_at", "sqltype": "timestamp", "notnull": true, "default": "now()" },
|
||||||
|
{ "name": "amount", "sqltype": "numeric(10,2)", "notnull": true }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
29
tenant.py
29
tenant.py
@ -1,29 +0,0 @@
|
|||||||
from db import dbGetMany, dbGetOne
|
|
||||||
|
|
||||||
def getTenants(user, token_info):
|
|
||||||
return dbGetMany(user, token_info,
|
|
||||||
{
|
|
||||||
"statement": """
|
|
||||||
SELECT id, salutation, firstname, lastname,
|
|
||||||
address1, address2, address3, zip, city,
|
|
||||||
phone1, phone2, iban, account
|
|
||||||
FROM tenant_t
|
|
||||||
""",
|
|
||||||
"params": ()
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
def getTenant(user, token_info, tenantId=None):
|
|
||||||
return dbGetOne(user, token_info,
|
|
||||||
{
|
|
||||||
"statement": """
|
|
||||||
SELECT id, salutation, firstname, lastname,
|
|
||||||
address1, address2, address3, zip, city,
|
|
||||||
phone1, phone2, iban, account
|
|
||||||
FROM tenant_t
|
|
||||||
WHERE id = %s
|
|
||||||
""",
|
|
||||||
"params": (tenantId, )
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user