kofdai commited on
Commit
07034af
·
verified ·
1 Parent(s): 41d5499

Upload init_db.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. init_db.py +97 -0
init_db.py ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """
2
+ データベース初期化スクリプト
3
+ 新しい認証システムとワークスペース機能のテーブルを作成します
4
+ NullAI用のデフォルトユーザーとワークスペースも作成します
5
+ """
6
+ import sys
7
+ import os
8
+
9
+ # プロジェクトルートをパスに追加
10
+ sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
11
+
12
+ from sqlalchemy import create_engine
13
+ from sqlalchemy.orm import sessionmaker
14
+ from backend.app.database.models import Base, User, Workspace
15
+
16
+ def init_database():
17
+ """データベーステーブルを作成"""
18
+ print("Initializing database...")
19
+
20
+ # データベースURLを環境変数または設定から取得(直接インポートを避ける)
21
+ database_url = os.getenv("DATABASE_URL", "sqlite:///./sql_app.db")
22
+ print(f"Database URL: {database_url}")
23
+
24
+ # エンジンを作成
25
+ engine = create_engine(
26
+ database_url,
27
+ connect_args={"check_same_thread": False} if database_url.startswith("sqlite") else {}
28
+ )
29
+
30
+ # 全テーブルを作成
31
+ print("Creating tables...")
32
+ Base.metadata.create_all(bind=engine)
33
+
34
+ print("✓ Database tables created successfully!")
35
+ print("\nCreated tables:")
36
+ for table in Base.metadata.tables.keys():
37
+ print(f" - {table}")
38
+
39
+ # NullAI用のデフォルトデータを作成
40
+ print("\nCreating NullAI default data...")
41
+ Session = sessionmaker(bind=engine)
42
+ session = Session()
43
+
44
+ try:
45
+ # デフォルトユーザーを作成(認証なしローカル版用)
46
+ default_user = session.query(User).filter_by(id="nullai_default_user").first()
47
+ if not default_user:
48
+ default_user = User(
49
+ id="nullai_default_user",
50
+ email="nullai@localhost",
51
+ username="nullai",
52
+ display_name="NullAI System",
53
+ auth_provider="local",
54
+ role="admin",
55
+ is_expert=True,
56
+ is_guest=False
57
+ )
58
+ session.add(default_user)
59
+ print(" ✓ Created default user: nullai_default_user")
60
+ else:
61
+ print(" - Default user already exists")
62
+
63
+ # デフォルトワークスペースを作成
64
+ default_workspace = session.query(Workspace).filter_by(id="default_workspace").first()
65
+ if not default_workspace:
66
+ default_workspace = Workspace(
67
+ id="default_workspace",
68
+ name="NullAI Default Workspace",
69
+ slug="default",
70
+ description="Default workspace for NullAI local operation (no authentication required)",
71
+ owner_id="nullai_default_user",
72
+ is_public=True,
73
+ allow_guest_edit=True,
74
+ allow_guest_view=True,
75
+ db_type="sqlite"
76
+ )
77
+ session.add(default_workspace)
78
+ print(" ✓ Created default workspace: default_workspace")
79
+ else:
80
+ print(" - Default workspace already exists")
81
+
82
+ session.commit()
83
+ print("\n✓ NullAI default data initialized successfully!")
84
+
85
+ except Exception as e:
86
+ session.rollback()
87
+ print(f"\n⚠️ Error creating default data: {e}")
88
+ print(" You may need to create default user and workspace manually.")
89
+ finally:
90
+ session.close()
91
+
92
+ print("\nYou can now start the application with:")
93
+ print(" python -m uvicorn backend.app.main:app --reload")
94
+ print(" or use: ./start_null_ai.sh")
95
+
96
+ if __name__ == "__main__":
97
+ init_database()