Skip to content

Latest commit

 

History

History
155 lines (110 loc) · 4.61 KB

AppleARM.md

File metadata and controls

155 lines (110 loc) · 4.61 KB

Oracle Storage Adapter for Parse Server on Apple Silicon

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.

Prerequisites

The Oracle SQL client is a software application that allows users to connect to an Oracle database and execute queries and manage the database.

SQL Client

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.

Instant Client Libraries

Installation

Clone Parse Server Repository. Supported version 7.3.0 and above.

There were changes in this release that supported:

  1. Test Exclusion List
  2. Dynamic Database Adapter configuration
git clone --depth 1 --branch 7.3.0 https://github.com/parse-community/parse-server.git
cd parse-server
  1. 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

Getting Started

Building Parse with Oracle Storage Adapter

  1. Add the Oracle database dependency

    npm install [email protected]
    

    Quick Start node-oracledb Installation

  2. Add the Parse File Adapter dependency

    npm install --save @parse/fs-files-adapter
    

    This defaults to local storage.

    Parse Server File Storage Adapter Repository

  3. Run

    npm ci
    

    to build the server

How To Run

Configuring Free23ai Oracle database image

  1. 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
    

Run Parse Server

  1. 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": ""
    }
  }
}
  1. Boot the Server using the Oracle Instant Client location
ORACLE_CLIENT_LOCATION=/Users/myuser/instantclient_23_3  npm start -- ./config.json

Test the Local Stack

  1. 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"}
    
  2. Connect to the database and verify

    sql testuser/Welcome12345@localhost:1521/FREEPDB1
    
  3. 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