ICON Service Base
ICON Service Base is a git repository that contains code shared among all Icon services in a service-oriented architecture. The repository consists of a backend written in Python and a frontend written in TypeScript.
Modules
Database Module
The Database module provides a robust and scalable solution for interacting with our PostgreSQL and InfluxDB databases. Both connections are managed using credentials provided through environment variables.
PostgreSQL
The PostgreSQL submodule includes a class for managing PostgreSQL database sessions (PostgresDatabaseSession
). It provides a Pythonic interface to the SQL language using the sqlmodel
library, and includes features for managing transactions and handling errors.
InfluxDB
The InfluxDB submodule provides a class (InfluxDBConnection
) to manage connections to an InfluxDB server. This class serves as a context manager to handle these connections, automatically opening and closing the connection when needed. It provides functionalities for writing data points to a bucket and creating new buckets.
Installation
Python
Make sure you have Python 3.10 or later installed on your system. The dependencies of this package are handled with poetry
. You can install the icon_service_base
like so:
poetry add git+ssh://git@gitlab.phys.ethz.ch:tiqi-projects/qchub/icon-services/icon_service_base.git
TypeScript frontend
Make sure you have Node.js and npm or yarn installed on your system. You can install @icon-services/icon_service_base
like so:
npm install git+ssh://git@gitlab.phys.ethz.ch:tiqi-projects/qchub/icon-services/icon_service_base.git
Usage
Python
The Python code can be used as a library in other ICON services. Import the relevant modules and classes from the icon_service_base
package in your Python code, as needed.
TypeScript Frontend
The frontend code contains the core of the typescript openAPI clients generated by openapi-typescript-codegen
. This needs to be imported in the ICON services like so:
import { OpenAPI } from '@icon-services/icon_service_base'
import { request as __request } from '@icon-services/icon_service_base'
export { ApiError } from '@icon-services/icon_service_base'
export {
CancelablePromise,
CancelError,
} from '@icon-services/icon_service_base'
export type { OpenAPIConfig } from '@icon-services/icon_service_base'
License
This project is licensed under the MIT License. See the LICENSE file for details.