feat: create database file if it does not exist
This commit is contained in:
		
							
								
								
									
										14
									
								
								server.ts
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								server.ts
									
									
									
									
									
								
							@@ -5,7 +5,19 @@ import { Database } from "bun:sqlite"; // bun:sqlite は非同期が基本
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
const projectRoot = import.meta.dirname; // server.ts がプロジェクトルートにあると仮定
 | 
					const projectRoot = import.meta.dirname; // server.ts がプロジェクトルートにあると仮定
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const db = new Database(path.join(projectRoot, "data/podcast.db"));
 | 
					const dbPath = path.join(projectRoot, "data/podcast.db");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// data ディレクトリが存在しない場合は作成
 | 
				
			||||||
 | 
					const dataDir = path.dirname(dbPath);
 | 
				
			||||||
 | 
					if (!fs.existsSync(dataDir)) {
 | 
				
			||||||
 | 
					  fs.mkdirSync(dataDir, { recursive: true });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// データベースファイルが存在しない場合、空のファイルを作成し、スキーマを適用
 | 
				
			||||||
 | 
					const db = new Database(dbPath);
 | 
				
			||||||
 | 
					if (!fs.existsSync(dbPath)) {
 | 
				
			||||||
 | 
					  fs.closeSync(fs.openSync(dbPath, "w")); // 空のDBファイルを作成
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
await db.exec(fs.readFileSync(path.join(projectRoot, "schema.sql"), "utf-8"));
 | 
					await db.exec(fs.readFileSync(path.join(projectRoot, "schema.sql"), "utf-8"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 静的ファイルを提供するディレクトリのパス設定
 | 
					// 静的ファイルを提供するディレクトリのパス設定
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user