feat: Add DocumentSeeder with initial documents
- Add DocumentSeeder with Home, Getting Started, and Markdown Guide - Update DatabaseSeeder to call UserSeeder and DocumentSeeder - Update UserSeeder to set is_admin flag - Update README with seeder documentation
This commit is contained in:
29
README.md
29
README.md
@@ -112,8 +112,18 @@ docker exec kb_php npm run build
|
|||||||
# マイグレーション
|
# マイグレーション
|
||||||
docker exec kb_php php artisan migrate
|
docker exec kb_php php artisan migrate
|
||||||
|
|
||||||
# 初期ユーザーの作成(オプション)
|
# 初期データの投入(管理者ユーザー + 初期ドキュメント)
|
||||||
|
docker exec kb_php php artisan db:seed
|
||||||
|
```
|
||||||
|
|
||||||
|
個別にシーダーを実行する場合:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 管理者ユーザーのみ
|
||||||
docker exec kb_php php artisan db:seed --class=UserSeeder
|
docker exec kb_php php artisan db:seed --class=UserSeeder
|
||||||
|
|
||||||
|
# 初期ドキュメントのみ
|
||||||
|
docker exec kb_php php artisan db:seed --class=DocumentSeeder
|
||||||
```
|
```
|
||||||
|
|
||||||
### 6. 管理者の設定
|
### 6. 管理者の設定
|
||||||
@@ -134,11 +144,26 @@ docker exec kb_php php artisan user:set-admin admin@example.com --remove
|
|||||||
| phpMyAdmin | http://localhost:9701 |
|
| phpMyAdmin | http://localhost:9701 |
|
||||||
| MailHog | http://localhost:9725 |
|
| MailHog | http://localhost:9725 |
|
||||||
|
|
||||||
## 初期アカウント
|
## 初期データ
|
||||||
|
|
||||||
|
### 初期アカウント
|
||||||
|
|
||||||
UserSeederを実行した場合:
|
UserSeederを実行した場合:
|
||||||
- **Email**: admin@example.com
|
- **Email**: admin@example.com
|
||||||
- **Password**: password
|
- **Password**: password
|
||||||
|
- **権限**: 管理者
|
||||||
|
|
||||||
|
### 初期ドキュメント
|
||||||
|
|
||||||
|
DocumentSeederを実行すると以下のドキュメントが作成されます:
|
||||||
|
|
||||||
|
| ドキュメント | 内容 |
|
||||||
|
|------------|------|
|
||||||
|
| Home | ホームページ(ウェルカムメッセージ、機能紹介) |
|
||||||
|
| Getting Started | 使い方ガイド(ドキュメント作成、Wikiリンク、ショートカット) |
|
||||||
|
| Markdown Guide | Markdown記法ガイド(見出し、リスト、コード、テーブル等) |
|
||||||
|
|
||||||
|
※ 既存のドキュメントがある場合、DocumentSeederはスキップされます。
|
||||||
|
|
||||||
## よく使うコマンド
|
## よく使うコマンド
|
||||||
|
|
||||||
|
|||||||
@@ -2,24 +2,18 @@
|
|||||||
|
|
||||||
namespace Database\Seeders;
|
namespace Database\Seeders;
|
||||||
|
|
||||||
use App\Models\User;
|
|
||||||
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
|
|
||||||
use Illuminate\Database\Seeder;
|
use Illuminate\Database\Seeder;
|
||||||
|
|
||||||
class DatabaseSeeder extends Seeder
|
class DatabaseSeeder extends Seeder
|
||||||
{
|
{
|
||||||
use WithoutModelEvents;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Seed the application's database.
|
* Seed the application's database.
|
||||||
*/
|
*/
|
||||||
public function run(): void
|
public function run(): void
|
||||||
{
|
{
|
||||||
// User::factory(10)->create();
|
$this->call([
|
||||||
|
UserSeeder::class,
|
||||||
User::factory()->create([
|
DocumentSeeder::class,
|
||||||
'name' => 'Test User',
|
|
||||||
'email' => 'test@example.com',
|
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
258
src/database/seeders/DocumentSeeder.php
Normal file
258
src/database/seeders/DocumentSeeder.php
Normal file
@@ -0,0 +1,258 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Database\Seeders;
|
||||||
|
|
||||||
|
use App\Models\Document;
|
||||||
|
use Illuminate\Database\Seeder;
|
||||||
|
|
||||||
|
class DocumentSeeder extends Seeder
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the database seeds.
|
||||||
|
*/
|
||||||
|
public function run(): void
|
||||||
|
{
|
||||||
|
// 既存のドキュメントがある場合はスキップ
|
||||||
|
if (Document::count() > 0) {
|
||||||
|
$this->command->info('Documents already exist. Skipping...');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$documents = [
|
||||||
|
[
|
||||||
|
'title' => 'Home',
|
||||||
|
'path' => 'Home.md',
|
||||||
|
'slug' => 'home',
|
||||||
|
'content' => $this->getHomeContent(),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'title' => 'Getting Started',
|
||||||
|
'path' => 'Getting Started.md',
|
||||||
|
'slug' => 'getting-started',
|
||||||
|
'content' => $this->getGettingStartedContent(),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'title' => 'Markdown Guide',
|
||||||
|
'path' => 'Markdown Guide.md',
|
||||||
|
'slug' => 'markdown-guide',
|
||||||
|
'content' => $this->getMarkdownGuideContent(),
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
foreach ($documents as $doc) {
|
||||||
|
Document::create([
|
||||||
|
'title' => $doc['title'],
|
||||||
|
'path' => $doc['path'],
|
||||||
|
'slug' => $doc['slug'],
|
||||||
|
'content' => $doc['content'],
|
||||||
|
'rendered_html' => Document::renderMarkdown($doc['content']),
|
||||||
|
]);
|
||||||
|
|
||||||
|
$this->command->info("Created: {$doc['title']}");
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->command->info('Initial documents created successfully!');
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getHomeContent(): string
|
||||||
|
{
|
||||||
|
return <<<'MARKDOWN'
|
||||||
|
# Welcome to Knowledge Base
|
||||||
|
|
||||||
|
ナレッジベースへようこそ!このアプリケーションは、Markdownで知識を整理・共有するためのツールです。
|
||||||
|
|
||||||
|
## 🚀 クイックスタート
|
||||||
|
|
||||||
|
- **Ctrl+K** (Mac: **Cmd+K**) でクイックスイッチャーを開く
|
||||||
|
- サイドバーの「New Document」で新規ドキュメント作成
|
||||||
|
- `[[ページ名]]` でWikiリンクを作成
|
||||||
|
|
||||||
|
## 📚 ドキュメント
|
||||||
|
|
||||||
|
- [[Getting Started]] - 基本的な使い方
|
||||||
|
- [[Markdown Guide]] - Markdown記法ガイド
|
||||||
|
|
||||||
|
## ✨ 機能
|
||||||
|
|
||||||
|
| 機能 | 説明 |
|
||||||
|
|------|------|
|
||||||
|
| Wikiリンク | `[[ページ名]]` で簡単リンク |
|
||||||
|
| 階層構造 | タイトルに `/` を含めて整理 |
|
||||||
|
| 全文検索 | クイックスイッチャーで高速検索 |
|
||||||
|
| シンタックスハイライト | コードブロックを美しく表示 |
|
||||||
|
|
||||||
|
## 🔗 便利なリンク
|
||||||
|
|
||||||
|
- [Laravel Documentation](https://laravel.com/docs)
|
||||||
|
- [Markdown Cheatsheet](https://www.markdownguide.org/cheat-sheet/)
|
||||||
|
MARKDOWN;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getGettingStartedContent(): string
|
||||||
|
{
|
||||||
|
return <<<'MARKDOWN'
|
||||||
|
# Getting Started
|
||||||
|
|
||||||
|
このガイドでは、ナレッジベースの基本的な使い方を説明します。
|
||||||
|
|
||||||
|
## ドキュメントの作成
|
||||||
|
|
||||||
|
1. サイドバーの「**New Document**」ボタンをクリック
|
||||||
|
2. タイトルを入力(`/` を含めると階層化されます)
|
||||||
|
3. Markdownでコンテンツを記述
|
||||||
|
4. 「Save」で保存
|
||||||
|
|
||||||
|
### 階層構造の例
|
||||||
|
|
||||||
|
タイトルに `/` を含めると自動的にフォルダ構造が作成されます:
|
||||||
|
|
||||||
|
- `Laravel/Eloquent/Relationships` → Laravel > Eloquent フォルダ内
|
||||||
|
- `プロジェクト/2024/メモ` → プロジェクト > 2024 フォルダ内
|
||||||
|
|
||||||
|
## Wikiリンク
|
||||||
|
|
||||||
|
他のドキュメントへのリンクは `[[ページ名]]` 記法で作成できます:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
詳細は [[Markdown Guide]] を参照してください。
|
||||||
|
[[Home]] に戻る
|
||||||
|
```
|
||||||
|
|
||||||
|
存在しないページへのリンクをクリックすると、新規作成画面が開きます。
|
||||||
|
|
||||||
|
## キーボードショートカット
|
||||||
|
|
||||||
|
| ショートカット | 機能 |
|
||||||
|
|--------------|------|
|
||||||
|
| Ctrl+K / Cmd+K | クイックスイッチャーを開く |
|
||||||
|
| Esc | モーダルを閉じる |
|
||||||
|
| ↑ / ↓ | 検索結果をナビゲート |
|
||||||
|
| Enter | 選択したドキュメントを開く |
|
||||||
|
|
||||||
|
## 次のステップ
|
||||||
|
|
||||||
|
- [[Markdown Guide]] でMarkdown記法を学ぶ
|
||||||
|
- [[Home]] に戻る
|
||||||
|
MARKDOWN;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getMarkdownGuideContent(): string
|
||||||
|
{
|
||||||
|
return <<<'MARKDOWN'
|
||||||
|
# Markdown Guide
|
||||||
|
|
||||||
|
このページでは、使用できるMarkdown記法を紹介します。
|
||||||
|
|
||||||
|
## 見出し
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# 見出し1
|
||||||
|
## 見出し2
|
||||||
|
### 見出し3
|
||||||
|
```
|
||||||
|
|
||||||
|
## テキスト装飾
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
**太字**
|
||||||
|
*イタリック*
|
||||||
|
~~取り消し線~~
|
||||||
|
`インラインコード`
|
||||||
|
```
|
||||||
|
|
||||||
|
**太字** / *イタリック* / ~~取り消し線~~ / `インラインコード`
|
||||||
|
|
||||||
|
## リスト
|
||||||
|
|
||||||
|
### 順序なしリスト
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
- 項目1
|
||||||
|
- 項目2
|
||||||
|
- ネスト項目
|
||||||
|
```
|
||||||
|
|
||||||
|
- 項目1
|
||||||
|
- 項目2
|
||||||
|
- ネスト項目
|
||||||
|
|
||||||
|
### 順序付きリスト
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
1. 最初
|
||||||
|
2. 次
|
||||||
|
3. 最後
|
||||||
|
```
|
||||||
|
|
||||||
|
1. 最初
|
||||||
|
2. 次
|
||||||
|
3. 最後
|
||||||
|
|
||||||
|
## コードブロック
|
||||||
|
|
||||||
|
````markdown
|
||||||
|
```php
|
||||||
|
<?php
|
||||||
|
echo "Hello, World!";
|
||||||
|
```
|
||||||
|
````
|
||||||
|
|
||||||
|
```php
|
||||||
|
<?php
|
||||||
|
echo "Hello, World!";
|
||||||
|
```
|
||||||
|
|
||||||
|
## テーブル
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
| 列1 | 列2 | 列3 |
|
||||||
|
|-----|-----|-----|
|
||||||
|
| A | B | C |
|
||||||
|
| D | E | F |
|
||||||
|
```
|
||||||
|
|
||||||
|
| 列1 | 列2 | 列3 |
|
||||||
|
|-----|-----|-----|
|
||||||
|
| A | B | C |
|
||||||
|
| D | E | F |
|
||||||
|
|
||||||
|
## 引用
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
> これは引用です。
|
||||||
|
> 複数行にまたがることもできます。
|
||||||
|
```
|
||||||
|
|
||||||
|
> これは引用です。
|
||||||
|
> 複数行にまたがることもできます。
|
||||||
|
|
||||||
|
## リンク
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
[外部リンク](https://example.com)
|
||||||
|
[[Wikiリンク]]
|
||||||
|
[[Getting Started]]
|
||||||
|
```
|
||||||
|
|
||||||
|
## 画像
|
||||||
|
|
||||||
|
```markdown
|
||||||
|

|
||||||
|
```
|
||||||
|
|
||||||
|
## 水平線
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
---
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 関連ページ
|
||||||
|
|
||||||
|
- [[Getting Started]] - 基本的な使い方
|
||||||
|
- [[Home]] - ホームに戻る
|
||||||
|
MARKDOWN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -19,13 +19,17 @@ public function run(): void
|
|||||||
'name' => 'Admin User',
|
'name' => 'Admin User',
|
||||||
'email' => 'admin@example.com',
|
'email' => 'admin@example.com',
|
||||||
'password' => Hash::make('password'),
|
'password' => Hash::make('password'),
|
||||||
|
'is_admin' => true,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$this->command->info('Admin user created!');
|
$this->command->info('Admin user created!');
|
||||||
$this->command->info('Email: admin@example.com');
|
$this->command->info('Email: admin@example.com');
|
||||||
$this->command->info('Password: password');
|
$this->command->info('Password: password');
|
||||||
|
$this->command->info('Role: Administrator');
|
||||||
} else {
|
} else {
|
||||||
$this->command->info('Admin user already exists.');
|
// 既存ユーザーを管理者に更新
|
||||||
|
User::where('email', 'admin@example.com')->update(['is_admin' => true]);
|
||||||
|
$this->command->info('Admin user already exists. Updated to administrator.');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user