This document describes how to build and run Parse Server with the new Oracle storage adapter on Apple Silicon. It will demonstrate running against the Free Oracle Database 23ai Docker container using the Oracle NodeJS libraries.
The Oracle SQL client is a software application that allows users to connect to an Oracle database and execute queries and manage the database.
The Oracle Instant Client is a set of software libraries that allow users to connect to an Oracle database without a full Oracle database installation.
Clone Parse Server Repository. Supported version 7.3.0 and above.
There were changes in this release that supported:
git clone --depth 1 --branch 7.3.0 https://github.com/parse-community/parse-server.git
cd parse-server
- Clone this Oracle Samples repo into src/Adapters/Storage/Oracle
cd src/Adapters/Storage
git clone https://github.com/oracle-samples/oracleadapter-parse.git Oracle
cd Oracle
rm -rf .git # IMPORTANT or build will fail
cd ../../../.. # Go back to Project Root
-
Add the Oracle database dependency
npm install [email protected]
-
Add the Parse File Adapter dependency
npm install --save @parse/fs-files-adapter
This defaults to local storage.
-
Run
npm ci
to build the server
-
Get and Start the image
docker run --name free23ai -d -p 1521:1521 -e ORACLE_PASSWORD=Welcome12345 -e APP_USER=testuser -e APP_USER_PASSWORD=Welcome12345 gvenzl/oracle-free:23.5-slim-faststart
- Create a config.json. This is a minimal set of configuration parameters for booting the server. The databaseURI is configured to attach to the local 23ai Oracle Database instance.
{
"appId": "APPLICATION_ID",
"masterKey": "MASTER_KEY",
"allowClientClassCreation": true,
"port": 1338,
"logLevel": "info",
"verbose": false,
"mountGraphQL": true,
"mountPlayground": true,
"graphQLPath": "/graphql",
"filesAdapter": {
"module": "@parse/fs-files-adapter"
},
"databaseAdapter": {
"module": "./Storage/Oracle/OracleStorageAdapter",
"options": {
"databaseURI": "oracledb://testuser:Welcome12345@localhost:1521/freepdb1",
"collectionPrefix": ""
}
}
}
- Boot the Server using the Oracle Instant Client location
ORACLE_CLIENT_LOCATION=/Users/myuser/instantclient_23_3 npm start -- ./config.json
-
Run a curl command
curl -X POST -H "X-Parse-Application-Id: APPLICATION_ID" -H "Content-Type: application/json" -d '{"score":12,"playerName":"scooby","cheatmode":false}' http://localhost:1338/parse/classes/GameScore
Upon success
{"objectId":"CdmLJT6Duc","createdAt":"2023-10-16T19:33:27.382Z"}
-
Connect to the database and verify
sql testuser/Welcome12345@localhost:1521/FREEPDB1
-
Run SODA commands
SQL> soda list List of collections: GameScore _Hooks _Idempotency _Role _SCHEMA _User SQL> soda get GameScore KEY Created On 3A8CB47A41A74F59BFDD143A3F365F4A 2023-10-16T19:33:27.404374000Z 1 row selected. SQL> soda get GameScore -k 3A8CB47A41A74F59BFDD143A3F365F4A Key: 3A8CB47A41A74F59BFDD143A3F365F4A Content: {"score":12,"playerName":"scooby","cheatmode":false,"updatedAt":"2023-10-16T19:33:27.382Z","createdAt":"2023-10-16T19:33:27.382Z","_id":"CdmLJT6Duc"} 1 row selected. soda help – list all soda commands