ZahlungForderung

This commit is contained in:
2021-01-18 18:37:19 +01:00
parent 272d8a13e2
commit 47d918cdbf
7 changed files with 181 additions and 80 deletions

View File

@ -1,23 +0,0 @@
from dbpool import getConnection, getOne, getMany
def get_forderungen_by_mieter(mieter_id):
return getMany("""
SELECT id,
mieter as mieter_id,
datum,
betrag,
kommentar
FROM forderung
WHERE mieter = ?
""", [ mieter_id ], "Forderung")
def get_forderung(id):
return getOne("""
SELECT id,
mieter as mieter_id
datum,
betrag,
kommentar
FROM forderung
WHERE id = ?
""", [ id ], "Forderung")

View File

@ -22,3 +22,15 @@ SELECT w.id as id,
WHERE o.id = w.objekt AND WHERE o.id = w.objekt AND
w.id = ? w.id = ?
""", (id, ), "Wohnung") """, (id, ), "Wohnung")
def get_wohnungen_by_objekt(id):
return getMany("""
SELECT w.id as id,
w.objekt as objekt_id,
w.shortname as wohnung,
w.flaeche as flaeche,
o.shortname as objekt
FROM wohnung w, objekt o
WHERE o.id = w.objekt AND
o.id = ?
""", [ id ], "Wohnung")

View File

@ -1,25 +0,0 @@
from dbpool import getConnection, getOne, getMany
def get_zahlungen_by_mieter(mieter_id):
return getMany("""
SELECT id,
mieter as mieter_id,
datum_ist,
datum_soll
betrag,
kommentar
FROM zahlung
WHERE mieter = ?
""", [ mieter_id ], "Zahlung")
def get_zahlung(id):
return getOne("""
SELECT id,
mieter as mieter_id
datum_ist,
datum_soll
betrag,
kommentar
FROM zahlung
WHERE id = ?
""", [ id ], "Zahlung")

68
ZahlungenForderungen.py Normal file
View File

@ -0,0 +1,68 @@
from dbpool import getConnection, getOne, getMany
def get_zahlungen_by_mieter(mieter_id):
return getMany("""
SELECT id,
mieter as mieter_id,
datum_ist,
datum_soll
betrag,
kommentar
FROM zahlung
WHERE mieter = ?
""", [ mieter_id ], "Zahlung")
def get_zahlung(id):
return getOne("""
SELECT id,
mieter as mieter_id
datum_ist,
datum_soll
betrag,
kommentar
FROM zahlung
WHERE id = ?
""", [ id ], "Zahlung")
def get_forderungen_by_mieter(mieter_id):
return getMany("""
SELECT id,
mieter as mieter_id,
datum,
betrag,
kommentar,
ref_wohnung
FROM forderung
WHERE mieter = ?
""", [ mieter_id ], "Forderung")
def get_forderung(id):
return getOne("""
SELECT id,
mieter as mieter_id
datum,
betrag,
kommentar,
ref_wohnung
FROM forderung
WHERE id = ?
""", [ id ], "Forderung")
def get_zahlungforderung_by_mieter_and_year(mieter_id, year):
start_date = "{}-01-01".format(year)
end_date = "{}-12-31".format(year)
return getMany("""
SELECT
id,
mieter,
datum_soll,
datum_ist,
betrag_zahlung,
betrag_forderung,
zf_type,
kommentar
FROM zahlung_forderung
WHERE mieter = ? AND
datum_soll BETWEEN ? AND ?
""", [mieter_id, start_date, end_date], "ZahlungForderung")

View File

@ -1,35 +1,32 @@
import mariadb import mariadb
import os import os
pool = None
def createConnectionPool():
global pool
def getConnection():
try: try:
user = os.environ["DB_USER"] user = os.environ["DB_USER"]
password = os.environ["DB_PASS"] password = os.environ["DB_PASS"]
host = os.environ["DB_HOST"] host = os.environ["DB_HOST"]
database = os.environ["DB_NAME"] database = os.environ["DB_NAME"]
conn = mariadb.connect(
user = user,
password = password,
host = host,
database = database
)
return conn
except mariadb.Error as err:
raise Exception("Error when connecting to database: {}".format(err))
except KeyError as err: except KeyError as err:
raise Exception("Database configuration variable {} not available".format(err)) raise Exception("Database configuration variable {} not available".format(err))
pool = mariadb.ConnectionPool(
user = user,
password = password,
host = host,
database = database,
pool_name = 'hv-wep-app',
pool_size = 5,
pool_reset_connection = True
)
def getConnection():
global pool
return pool.get_connection()
def getMany(stmt, params, objName): def getMany(stmt, params, objName):
dbh = None
cur = None
try: try:
dbh = getConnection() dbh = getConnection()
objs = [] objs = []
@ -39,14 +36,19 @@ def getMany(stmt, params, objName):
objs.append(obj) objs.append(obj)
return objs return objs
except Exception as err: except Exception as err:
print("Error in getMany({}): {}".format(objName, err))
return str(err), 500 return str(err), 500
finally: finally:
print("return connection in getMany") print("return connection in getMany({})".format(objName))
cur.close() if cur:
dbh.close() cur.close()
if dbh:
dbh.close()
def getOne(stmt, params, objName): def getOne(stmt, params, objName):
dbh = None
cur = None
try: try:
dbh = getConnection() dbh = getConnection()
cur = dbh.cursor(dictionary=True) cur = dbh.cursor(dictionary=True)
@ -59,9 +61,12 @@ def getOne(stmt, params, objName):
return "More than one {} by that id ({}, {})".format(objName, id, invObj), 500 return "More than one {} by that id ({}, {})".format(objName, id, invObj), 500
return obj return obj
except Exception as err: except Exception as err:
print("Error in getOne({}): {}".format(objName, err))
return str(err), 500 return str(err), 500
finally: finally:
print("return connection in getOne") print("return connection in getOne({})".format(objName))
cur.close() if cur:
dbh.close() cur.close()
if dbh:
dbh.close()

View File

@ -1,9 +1,5 @@
import connexion import connexion
from flask_cors import CORS from flask_cors import CORS
from dbpool import createConnectionPool
# prepare database connections
createConnectionPool()
# instantiate the webservice # instantiate the webservice
app = connexion.App(__name__) app = connexion.App(__name__)

View File

@ -55,6 +55,27 @@ paths:
description: No Wohnung available description: No Wohnung available
500: 500:
description: Some server error description: Some server error
/hv/objekt/{id}/wohnungen:
get:
tags: [ "Wohnungen", "Objekte" ]
operationId: Wohnungen.get_wohnungen_by_objekt
summary: Returns all Wohnungen for one Objekt
parameters:
- name: id
in: path
type: integer
required: true
responses:
200:
description: Successful response.
schema:
type: array
items:
$ref: '#/definitions/Wohnung'
404:
description: No Wohnung available
500:
description: Some server error
/hv/wohnung/{id}: /hv/wohnung/{id}:
get: get:
tags: [ "Wohnungen" ] tags: [ "Wohnungen" ]
@ -112,7 +133,7 @@ paths:
/hv/forderung/{id}: /hv/forderung/{id}:
get: get:
tags: [ "Forderung" ] tags: [ "Forderung" ]
operationId: Forderungen.get_forderung operationId: ZahlungenForderungen.get_forderung
summary: Returns Forderung by id summary: Returns Forderung by id
parameters: parameters:
- name: id - name: id
@ -131,7 +152,7 @@ paths:
/hv/mieter/{mieter_id}/forderungen: /hv/mieter/{mieter_id}/forderungen:
get: get:
tags: [ "Mieter", "Forderung" ] tags: [ "Mieter", "Forderung" ]
operationId: Forderungen.get_forderungen_by_mieter operationId: ZahlungenForderungen.get_forderungen_by_mieter
summary: Returns all Forderungen for a given Mieter summary: Returns all Forderungen for a given Mieter
parameters: parameters:
- name: mieter_id - name: mieter_id
@ -152,7 +173,7 @@ paths:
/hv/zahlung/{id}: /hv/zahlung/{id}:
get: get:
tags: [ "Zahlung" ] tags: [ "Zahlung" ]
operationId: Zahlungen.get_zahlung operationId: ZahlungenForderungen.get_zahlung
summary: Returns Zahlung by id summary: Returns Zahlung by id
parameters: parameters:
- name: id - name: id
@ -171,7 +192,7 @@ paths:
/hv/mieter/{mieter_id}/zahlungen: /hv/mieter/{mieter_id}/zahlungen:
get: get:
tags: [ "Mieter", "Zahlung" ] tags: [ "Mieter", "Zahlung" ]
operationId: Zahlungen.get_zahlungen_by_mieter operationId: ZahlungenForderungen.get_zahlungen_by_mieter
summary: Returns all Zahlungen for a given Mieter summary: Returns all Zahlungen for a given Mieter
parameters: parameters:
- name: mieter_id - name: mieter_id
@ -189,6 +210,32 @@ paths:
description: No Zahlung available description: No Zahlung available
500: 500:
description: Some server error description: Some server error
/hv/mieter/{mieter_id}/zahlungforderung/{year}:
get:
tags: [ "Mieter", "Zahlung", "Forderung" ]
operationId: ZahlungenForderungen.get_zahlungforderung_by_mieter_and_year
summary: Returns all Zahlungen and Forderungen for a given Mieter and a given year
parameters:
- name: mieter_id
in: path
type: integer
required: true
- name: year
in: path
type: integer
required: true
responses:
200:
description: Successful response
schema:
type: array
items:
$ref: '#/definitions/ZahlungForderung'
404:
description: No ZahlungForderung available
500:
description: Some server error
definitions: definitions:
Objekt: Objekt:
@ -261,6 +308,8 @@ definitions:
type: number type: number
kommentar: kommentar:
type: string type: string
ref_wohnung:
type: number
Zahlung: Zahlung:
description: Zahlung type description: Zahlung type
type: object type: object
@ -277,4 +326,23 @@ definitions:
type: number type: number
kommentar: kommentar:
type: string type: string
ZahlungForderung:
description: ZahlungForderung type
type: object
properties:
zf_type:
type: string
id:
type: integer
datum_soll:
type: string
datum_ist:
type: string
betrag_zahlung:
type: number
betrag_forderung:
type: number
kommentar:
type: string
mieter:
type: number