ZahlungForderung

This commit is contained in:
Wolfgang Hottgenroth 2021-01-18 18:37:19 +01:00
parent 272d8a13e2
commit 47d918cdbf
Signed by: wn
GPG Key ID: E49AF3B9EF6DD469
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
w.id = ?
""", (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 os
pool = None
def createConnectionPool():
global pool
def getConnection():
try:
user = os.environ["DB_USER"]
password = os.environ["DB_PASS"]
host = os.environ["DB_HOST"]
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:
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):
dbh = None
cur = None
try:
dbh = getConnection()
objs = []
@ -39,14 +36,19 @@ def getMany(stmt, params, objName):
objs.append(obj)
return objs
except Exception as err:
print("Error in getMany({}): {}".format(objName, err))
return str(err), 500
finally:
print("return connection in getMany")
cur.close()
dbh.close()
print("return connection in getMany({})".format(objName))
if cur:
cur.close()
if dbh:
dbh.close()
def getOne(stmt, params, objName):
dbh = None
cur = None
try:
dbh = getConnection()
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 obj
except Exception as err:
print("Error in getOne({}): {}".format(objName, err))
return str(err), 500
finally:
print("return connection in getOne")
cur.close()
dbh.close()
print("return connection in getOne({})".format(objName))
if cur:
cur.close()
if dbh:
dbh.close()

View File

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

View File

@ -55,6 +55,27 @@ paths:
description: No Wohnung available
500:
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}:
get:
tags: [ "Wohnungen" ]
@ -112,7 +133,7 @@ paths:
/hv/forderung/{id}:
get:
tags: [ "Forderung" ]
operationId: Forderungen.get_forderung
operationId: ZahlungenForderungen.get_forderung
summary: Returns Forderung by id
parameters:
- name: id
@ -131,7 +152,7 @@ paths:
/hv/mieter/{mieter_id}/forderungen:
get:
tags: [ "Mieter", "Forderung" ]
operationId: Forderungen.get_forderungen_by_mieter
operationId: ZahlungenForderungen.get_forderungen_by_mieter
summary: Returns all Forderungen for a given Mieter
parameters:
- name: mieter_id
@ -152,7 +173,7 @@ paths:
/hv/zahlung/{id}:
get:
tags: [ "Zahlung" ]
operationId: Zahlungen.get_zahlung
operationId: ZahlungenForderungen.get_zahlung
summary: Returns Zahlung by id
parameters:
- name: id
@ -171,7 +192,7 @@ paths:
/hv/mieter/{mieter_id}/zahlungen:
get:
tags: [ "Mieter", "Zahlung" ]
operationId: Zahlungen.get_zahlungen_by_mieter
operationId: ZahlungenForderungen.get_zahlungen_by_mieter
summary: Returns all Zahlungen for a given Mieter
parameters:
- name: mieter_id
@ -189,6 +210,32 @@ paths:
description: No Zahlung available
500:
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:
Objekt:
@ -261,6 +308,8 @@ definitions:
type: number
kommentar:
type: string
ref_wohnung:
type: number
Zahlung:
description: Zahlung type
type: object
@ -277,4 +326,23 @@ definitions:
type: number
kommentar:
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