Seth commited on
Commit
50e855b
Β·
1 Parent(s): 70083b5
Files changed (1) hide show
  1. backend/app/database.py +89 -7
backend/app/database.py CHANGED
@@ -77,16 +77,98 @@ def init_db():
77
 
78
  # Try to create tables
79
  # For CockroachDB, version parsing may fail but connection still works
80
- Base.metadata.create_all(bind=engine)
81
- print("βœ“ Database tables created successfully")
82
- return True
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  except Exception as e:
84
  error_str = str(e)
85
- # Check if it's a version parsing error (non-fatal for CockroachDB)
86
  if "Could not determine version" in error_str:
87
- # Version parsing failed, but CockroachDB connection works
88
- # SQLAlchemy will still function, just can't parse version string
89
- # Tables will be created on first actual database operation
90
  print("⚠ CockroachDB version parsing issue (non-fatal)")
91
  print("βœ“ Database connection works - tables will be created on first use")
92
  return True # Connection works, return True
 
77
 
78
  # Try to create tables
79
  # For CockroachDB, version parsing may fail but connection still works
80
+ try:
81
+ Base.metadata.create_all(bind=engine)
82
+ print("βœ“ Database tables created successfully")
83
+ return True
84
+ except Exception as create_error:
85
+ error_str = str(create_error)
86
+ # Check if it's a version parsing error (non-fatal for CockroachDB)
87
+ if "Could not determine version" in error_str:
88
+ # Version parsing failed, but CockroachDB connection works
89
+ # Try to create tables using raw SQL to bypass version check
90
+ try:
91
+ # Use raw connection to create tables
92
+ with engine.raw_connection() as raw_conn:
93
+ cursor = raw_conn.cursor()
94
+ # Create tables using IF NOT EXISTS
95
+ tables_sql = [
96
+ """CREATE TABLE IF NOT EXISTS users (
97
+ id SERIAL PRIMARY KEY,
98
+ email VARCHAR UNIQUE,
99
+ name VARCHAR,
100
+ created_at TIMESTAMP DEFAULT NOW()
101
+ )""",
102
+ """CREATE TABLE IF NOT EXISTS integrations (
103
+ id SERIAL PRIMARY KEY,
104
+ user_id INTEGER REFERENCES users(id),
105
+ provider VARCHAR,
106
+ access_token TEXT,
107
+ refresh_token TEXT,
108
+ expires_at TIMESTAMP,
109
+ account_info JSONB,
110
+ connected BOOLEAN DEFAULT FALSE,
111
+ created_at TIMESTAMP DEFAULT NOW(),
112
+ updated_at TIMESTAMP DEFAULT NOW()
113
+ )""",
114
+ """CREATE TABLE IF NOT EXISTS assets (
115
+ id SERIAL PRIMARY KEY,
116
+ user_id INTEGER REFERENCES users(id),
117
+ name VARCHAR,
118
+ file_path VARCHAR,
119
+ file_type VARCHAR,
120
+ product_category VARCHAR,
121
+ sub_category VARCHAR,
122
+ size INTEGER,
123
+ extra_metadata JSONB,
124
+ created_at TIMESTAMP DEFAULT NOW()
125
+ )""",
126
+ """CREATE TABLE IF NOT EXISTS posts (
127
+ id SERIAL PRIMARY KEY,
128
+ user_id INTEGER REFERENCES users(id),
129
+ title VARCHAR,
130
+ content TEXT,
131
+ post_type VARCHAR,
132
+ product_category VARCHAR,
133
+ scheduled_date TIMESTAMP,
134
+ status VARCHAR,
135
+ linkedin_post_id VARCHAR,
136
+ canva_design_id VARCHAR,
137
+ assets JSONB,
138
+ extra_metadata JSONB,
139
+ created_at TIMESTAMP DEFAULT NOW(),
140
+ updated_at TIMESTAMP DEFAULT NOW()
141
+ )""",
142
+ """CREATE TABLE IF NOT EXISTS campaigns (
143
+ id SERIAL PRIMARY KEY,
144
+ user_id INTEGER REFERENCES users(id),
145
+ name VARCHAR,
146
+ date_range_start TIMESTAMP,
147
+ date_range_end TIMESTAMP,
148
+ products JSONB,
149
+ post_types JSONB,
150
+ posts_per_week INTEGER,
151
+ status VARCHAR,
152
+ created_at TIMESTAMP DEFAULT NOW(),
153
+ updated_at TIMESTAMP DEFAULT NOW()
154
+ )"""
155
+ ]
156
+ for sql in tables_sql:
157
+ cursor.execute(sql)
158
+ raw_conn.commit()
159
+ cursor.close()
160
+ print("βœ“ CockroachDB tables created successfully (using raw SQL)")
161
+ return True
162
+ except Exception as raw_error:
163
+ print(f"⚠ Table creation failed: {raw_error}")
164
+ print("βœ“ Database connection works - tables will be created on first use")
165
+ return True # Connection works, tables will be created later
166
+ else:
167
+ # Real error, not just version parsing
168
+ raise create_error
169
  except Exception as e:
170
  error_str = str(e)
 
171
  if "Could not determine version" in error_str:
 
 
 
172
  print("⚠ CockroachDB version parsing issue (non-fatal)")
173
  print("βœ“ Database connection works - tables will be created on first use")
174
  return True # Connection works, return True