5 Commits

6 changed files with 102 additions and 6 deletions

View File

@ -57,5 +57,5 @@ deploy:
- docker rm $CONTAINER_NAME || echo "$CONTAINER_NAME not exsting, anyway okay" - docker rm $CONTAINER_NAME || echo "$CONTAINER_NAME not exsting, anyway okay"
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY; - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY;
- docker pull $IMAGE_NAME:${CI_COMMIT_TAG} - docker pull $IMAGE_NAME:${CI_COMMIT_TAG}
- docker run -d --restart always --name "hv2-api" --network docker-server --ip 172.16.10.38 -v $SERVICE_VOLUME:/opt/app/config $IMAGE_NAME:${CI_COMMIT_TAG} - docker run -d --restart always --name $CONTAINER_NAME --network docker-server --ip 172.16.10.38 -v $SERVICE_VOLUME:/opt/app/config $IMAGE_NAME:${CI_COMMIT_TAG}

View File

@ -6,10 +6,6 @@ LABEL ImageName="registry.hottis.de/hv2/hv2-api"
ARG APP_DIR="/opt/app" ARG APP_DIR="/opt/app"
ARG CONF_DIR="${APP_DIR}/config" ARG CONF_DIR="${APP_DIR}/config"
ENV DB_HOST="172.16.10.18"
ENV DB_NAME="hausverwaltung"
ENV DB_USER="hausverwaltung-ui"
ENV DB_PASS="test123"
RUN \ RUN \

View File

@ -1,2 +1,10 @@
# copy to ENV and adjust values # copy to ENV and adjust values
JWT_PUB_KEY="..."
DB_USER="hv2"
DB_PASS="..."
DB_HOST="172.16.10.27"
DB_NAME="hv2"

17
account.py Normal file
View File

@ -0,0 +1,17 @@
from db import execDatabaseOperation
from loguru import logger
import json
def _opGetAccounts(cursor, params):
accounts = []
cursor.execute('SELECT id, description FROM account_t')
for accountObj in cursor:
logger.debug("add account {} -> {}".format(accountObj[0], accountObj[1]))
accounts.append({"id": accountObj[0], "description": accountObj[1]})
return accounts
def getAccounts(user, token_info):
logger.info("getAccounts, token: {}".format(json.dumps(token_info)))
return execDatabaseOperation(_opGetAccounts, ())

52
db.py Normal file
View File

@ -0,0 +1,52 @@
import psycopg2
from loguru import logger
import os
import configparser
DB_USER = ""
DB_PASS = ""
DB_HOST = ""
DB_NAME = ""
try:
DB_USER = os.environ["DB_USER"]
DB_PASS = os.environ["DB_PASS"]
DB_HOST = os.environ["DB_HOST"]
DB_NAME = os.environ["DB_NAME"]
except KeyError:
config = configparser.ConfigParser()
config.read('/opt/app/config/dbconfig.ini')
DB_USER = config["database"]["user"]
DB_PASS = config["database"]["pass"]
DB_HOST = config["database"]["host"]
DB_NAME = config["database"]["name"]
logger.info(f"db config: {DB_USER}, {DB_NAME}, {DB_HOST}, {DB_PASS}")
def databaseOperation(cursor, params):
cursor.execute('SELECT key, value FROM claims_for_user_v where "user" = %s and application = %s',
params)
for claimObj in cursor:
logger.debug("add claim {} -> {}".format(claimObj[0], claimObj[1]))
return []
def execDatabaseOperation(func, params):
conn = None
cur = None
try:
conn = psycopg2.connect(user = DB_USER, password = DB_PASS,
host = DB_HOST, database = DB_NAME)
conn.autocommit = False
with conn.cursor() as cur:
return func(cur, params)
except psycopg2.Error as err:
raise Exception("Error when connecting to database: {}".format(err))
finally:
if conn:
conn.close()

View File

@ -26,7 +26,22 @@ paths:
$ref: '#/components/schemas/TestOutput' $ref: '#/components/schemas/TestOutput'
security: security:
- jwt: ['secret'] - jwt: ['secret']
/v1/accounts:
get:
tags: [ "Account" ]
summary: Return all normalized accounts
operationId: account.getAccounts
responses:
'200':
description: accounts response
content:
'application/json':
schema:
type: array
items:
$ref: '#/components/schemas/Account'
security:
- jwt: ['secret']
components: components:
securitySchemes: securitySchemes:
@ -44,3 +59,11 @@ components:
type: string type: string
details: details:
type: string type: string
Account:
description: Account
type: object
properties:
id:
type: integer
description:
type: string