Skip to content

Commit ac2d831

Browse files
authored
feat(iam): add Identity & Access Management use case (#33)
1 parent f752b7e commit ac2d831

File tree

16 files changed

+2818
-0
lines changed

16 files changed

+2818
-0
lines changed

.github/dependabot.yml

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,20 @@ updates:
114114
patterns:
115115
- "org.apache.maven.plugins:*"
116116

117+
- package-ecosystem: "maven"
118+
directory: "/iam/java"
119+
schedule:
120+
interval: weekly
121+
day: "sunday"
122+
open-pull-requests-limit: 20
123+
groups:
124+
arcadedb:
125+
patterns:
126+
- "com.arcadedb:*"
127+
maven-plugins:
128+
patterns:
129+
- "org.apache.maven.plugins:*"
130+
117131
# ── npm ────────────────────────────────────────────────────────────────────
118132
- package-ecosystem: "npm"
119133
directory: "/supply-chain/js"
@@ -126,6 +140,18 @@ updates:
126140
patterns:
127141
- "pg"
128142

143+
# ── pip ──────────────────────────────────────────────────────────────────────
144+
- package-ecosystem: "pip"
145+
directory: "/iam/python"
146+
schedule:
147+
interval: weekly
148+
day: "sunday"
149+
open-pull-requests-limit: 10
150+
groups:
151+
psycopg:
152+
patterns:
153+
- "psycopg*"
154+
129155
# ── Docker Compose ──────────────────────────────────────────────────────────
130156
- package-ecosystem: "docker-compose"
131157
directory: "/recommendation-engine"
@@ -192,3 +218,14 @@ updates:
192218
arcadedb-docker:
193219
patterns:
194220
- "arcadedata/arcadedb"
221+
222+
- package-ecosystem: "docker-compose"
223+
directory: "/iam"
224+
schedule:
225+
interval: weekly
226+
day: "sunday"
227+
open-pull-requests-limit: 10
228+
groups:
229+
arcadedb-docker:
230+
patterns:
231+
- "arcadedata/arcadedb"

.github/workflows/iam.yml

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
name: IAM CI
2+
3+
on:
4+
push:
5+
paths:
6+
- iam/**
7+
- .github/workflows/iam.yml
8+
pull_request:
9+
paths:
10+
- iam/**
11+
- .github/workflows/iam.yml
12+
13+
jobs:
14+
test:
15+
runs-on: ubuntu-latest
16+
timeout-minutes: 15
17+
permissions:
18+
contents: read
19+
strategy:
20+
fail-fast: false
21+
matrix:
22+
runner: [curl, java, python]
23+
24+
env:
25+
ARCADEDB_URL: http://localhost:2480
26+
ARCADEDB_USER: root
27+
ARCADEDB_PASS: arcadedb
28+
29+
steps:
30+
- name: Checkout
31+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
32+
with:
33+
fetch-depth: 1
34+
35+
- name: Set up Java
36+
if: matrix.runner == 'java'
37+
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
38+
with:
39+
java-version: '21'
40+
distribution: 'temurin'
41+
42+
- name: Cache Maven repository
43+
if: matrix.runner == 'java'
44+
uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
45+
with:
46+
path: ~/.m2
47+
key: ${{ runner.os }}-m2-iam-${{ hashFiles('iam/java/pom.xml') }}
48+
restore-keys: ${{ runner.os }}-m2-iam-
49+
50+
- name: Set up Python
51+
if: matrix.runner == 'python'
52+
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
53+
with:
54+
python-version: '3.12'
55+
56+
- name: Cache pip
57+
if: matrix.runner == 'python'
58+
uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
59+
with:
60+
path: ~/.cache/pip
61+
key: ${{ runner.os }}-pip-iam-${{ hashFiles('iam/python/requirements.txt') }}
62+
restore-keys: ${{ runner.os }}-pip-iam-
63+
64+
- name: Install Python dependencies
65+
if: matrix.runner == 'python'
66+
working-directory: iam/python
67+
run: pip install -r requirements.txt
68+
69+
- name: Start ArcadeDB
70+
working-directory: iam
71+
run: docker compose up -d
72+
73+
- name: Setup database
74+
working-directory: iam
75+
run: ./setup.sh
76+
77+
- name: Run curl queries
78+
if: matrix.runner == 'curl'
79+
working-directory: iam
80+
run: ./queries/queries.sh
81+
82+
- name: Build and run Java
83+
if: matrix.runner == 'java'
84+
working-directory: iam/java
85+
run: |
86+
mvn package --no-transfer-progress
87+
java -jar target/iam.jar
88+
89+
- name: Run Python queries
90+
if: matrix.runner == 'python'
91+
working-directory: iam/python
92+
run: python iam.py
93+
94+
- name: Teardown
95+
if: always()
96+
working-directory: iam
97+
run: docker compose down

CLAUDE.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ A collection of self-contained projects demonstrating [ArcadeDB](https://arcaded
1515
| `graph-rag/` | `GraphRAG` | 26.3.1 | 21 | Bolt (`neo4j-java-driver`) + LangChain4j |
1616
| `fraud-detection/` | `FraudDetection` | 26.3.1 | 21 | HTTP API (`arcadedb-network`) |
1717
| `supply-chain/` | `SupplyChain` | 26.3.1 | 21 | HTTP API (`arcadedb-network`) + PostgreSQL (`pg`) |
18+
| `iam/` | `IAM` | 26.3.1 | 21 | HTTP API (`arcadedb-network`) + PostgreSQL (`psycopg`) |
1819

1920
## Directory Structure (per use case)
2021

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ and runnable demos via both `curl` and a Java program.
1616
| [realtime-analytics](./realtime-analytics/) | Unified IoT and service monitoring platform | Time-series, Graph traversal, Cypher |
1717
| [social-network-analytics](./social-network-analytics/) | Social network analytics with materialized view dashboards | Materialized views, Graph traversal, Time-series, Polyglot (SQL + OpenCypher) |
1818
| [supply-chain](./supply-chain/) | Supply chain management with multi-tier visibility | Graph traversal, Vector similarity, Time-series, PostgreSQL protocol, JavaScript |
19+
| [iam](./iam/) | Identity & Access Management | Graph traversal, Time-series, Vector similarity, PostgreSQL protocol, Python |
1920

2021
## Structure
2122

0 commit comments

Comments
 (0)