Skip to content

Commit 6701c4a

Browse files
committed
feature: Add Directus integration with API and Docker setup
This commit introduces Directus SDK for managing collections and a Docker Compose configuration for running Directus locally. It includes an API function to fetch published articles using Directus and updates dependencies to include the SDK.
1 parent df16d92 commit 6701c4a

5 files changed

Lines changed: 83 additions & 0 deletions

File tree

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
services:
2+
directus:
3+
image: directus/directus:latest
4+
ports:
5+
- "8055:8055"
6+
volumes:
7+
- ./uploads:/directus/uploads
8+
- ./extensions:/directus/extensions
9+
environment:
10+
KEY: "replace-with-random-32char-string"
11+
SECRET: "replace-with-secure-random-value"
12+
ADMIN_EMAIL: "ryuzu1006@gmail.com"
13+
ADMIN_PASSWORD: "d1r3ctu5"
14+
DB_CLIENT: "pg"
15+
DB_HOST: "directus-db"
16+
DB_PORT: "5432"
17+
DB_DATABASE: "directus"
18+
DB_USER: "directus"
19+
DB_PASSWORD: "directus-db-password"
20+
WEBSOCKETS_ENABLED: "true"
21+
depends_on:
22+
- directus-db
23+
restart: unless-stopped
24+
25+
directus-db:
26+
image: postgres:latest
27+
volumes:
28+
- postgres-data:/var/lib/postgresql/data
29+
environment:
30+
POSTGRES_DB: "directus"
31+
POSTGRES_USER: "directus"
32+
POSTGRES_PASSWORD: "directus-db-password"
33+
restart: unless-stopped
34+
healthcheck:
35+
test: ["CMD-SHELL", "pg_isready -U directus"]
36+
interval: 10s
37+
timeout: 5s
38+
retries: 5
39+
40+
volumes:
41+
postgres-data:

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"lint": "next lint"
1010
},
1111
"dependencies": {
12+
"@directus/sdk": "^19.0.1",
1213
"@kuma-ui/core": "^1.5.8",
1314
"@radix-ui/react-avatar": "^1.1.2",
1415
"@radix-ui/react-slot": "^1.1.1",

src/app/api/collections.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// app/api/collections.ts などのサーバーコンポーネントでの使用
2+
import { createDirectus, rest, readItems } from '@directus/sdk';
3+
4+
// 型定義(例)
5+
interface Article {
6+
id: number;
7+
title: string;
8+
content: string;
9+
published_date: string;
10+
}
11+
12+
async function getArticles() {
13+
const directus = createDirectus(process.env.DIRECTUS_URL!).with(rest());
14+
15+
try {
16+
const articles = await directus.request(
17+
readItems('articles', {
18+
fields: ['id', 'title', 'content', 'published_date'],
19+
filter: {
20+
status: {
21+
_eq: 'published'
22+
}
23+
}
24+
})
25+
);
26+
return articles;
27+
} catch (error) {
28+
console.error('Error fetching articles:', error);
29+
return [];
30+
}
31+
}

src/lib/directus.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { createDirectus, rest } from '@directus/sdk';
2+
3+
const directus = createDirectus('http://localhost:8055').with(rest());
4+
5+
export default directus;

yarn.lock

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -869,6 +869,11 @@
869869
"@babel/helper-string-parser" "^7.25.9"
870870
"@babel/helper-validator-identifier" "^7.25.9"
871871

872+
"@directus/sdk@^19.0.1":
873+
version "19.0.1"
874+
resolved "https://registry.yarnpkg.com/@directus/sdk/-/sdk-19.0.1.tgz#06d154a41499b79b068f18992a7e5f310f0b242c"
875+
integrity sha512-6KwWedA/vxrMN2aRm5L52TEgB+42vkz0Ae8kwOitHuBPT4VWtUNOXenzaHnZyXyNrEgh/VBLJ36f3UEe3b/Wfw==
876+
872877
"@emnapi/runtime@^1.2.0":
873878
version "1.3.1"
874879
resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.3.1.tgz#0fcaa575afc31f455fd33534c19381cfce6c6f60"

0 commit comments

Comments
 (0)