Skip to content

karol-preiskorn/3d-inventory-oracle-api

Repository files navigation

3d-inventory-oracle-api

wakatime GitHub latest commit GitHub stars GitHub issues MIT license TypeScript Npm GitHub license

Part of 3d-inventory project.

Overview

This server was generated by the swagger-codegen project. By using the OpenAPI-Spec from a remote server, you can easily generate a server stub.

  • Simple commonjs (backend) api depends on oracledb
  • Generated by Swagger v3.
  • API is in /src
  • Oracle db in docker (statefull)

Running the server

To run the API server:

npm run api-install
npm run nodemon

To view the Swagger UI interface:

open http://localhost:8080/docs

This project leverages the mega-awesome swagger-tools middleware which does most all the work.

Swagger

OpenAPI definition 3.0.3

https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#componentsObject

NPM run

  1. Make backup npm run swagger:backup-before-generate --> cp -v ./src/service/* ./backup
  2. Update jars swagger:get-jars
  3. Generate api by docker swagger:v3-docker-generate
  4. Edit openapi by swagger editor: swagger:v3-editor and swagger:v3-editor-open
  5. Generate api by jars swagger:v3-generate

Setup Database

When run in podman db create at 172.17.0.2. To connect db i use Oracle SQLcl.

After your service is created, you can connect to it via the following properties:

Hostname:
    oracle (from within another container)
    localhost or 127.0.0.1 (from the host directly)
Port: 1521
Service name: FREEPDB1
Database App User: my_user
Database App Password: password_i_should_change
$ ./sql sys/[email protected]:1521/FREEPDB1 as sysdba

Set password

# call shell
docker exec -it 5c6a4a0c10638e88b0d1a5e35867ed908b78d8dc7fae4df804fc8cbcf1d78921 sh
# change password
docker exec -d 5c6a4a0c1063 ./setPassword.sh babilon5
# run some other command in container like sql scripts
docker exec -ti 5c6a4a0c1063 sh -c "echo a && echo b"
sql sys/[email protected]:1521/orclpdb1 as sysdba

Use image of DB

This images have more options to configure pass and faststart: https://hub.docker.com/r/gvenzl/oracle-xe

I use db-oracle-21-faststart simple as this:

docker run -d -p 1521:1521 -e ORACLE_PASSWORD=babilon5 \
           -v oracle-volume:/opt/oracle/oradata \
           gvenzl/oracle-xe:21.3.0-faststart

Run Oracle DB in container

Shell

podman run -d -p 1521:1521 -e ORACLE_PASSWORD=3dinventory docker://gvenzl/oracle-free
sqlplus sys/LetsTest1@localhost/XE as sysdba

Podman

podman exec -ti oracle-xe sqlplus sys/LetsTest1@localhost/XE as sysdba

Create test database and test user

CREATE PLUGGABLE DATABASE test ADMIN USER test IDENTIFIED BY LetsTest1 FILE_NAME_CONVERT=('pdbseed','test');
ALTER PLUGGABLE DATABASE test OPEN;
ALTER PLUGGABLE DATABASE test SAVE STATE;
ALTER SESSION SET CONTAINER=test;
GRANT CONNECT, RESOURCE, CREATE VIEW, UNLIMITED TABLESPACE TO test;
exit;

Test JSON structure in 19.3g

  1. Create instance db from offical build: 19.3.0