Ajit Panday commited on
Commit
28721de
·
1 Parent(s): 22ebc27

Add database schema setup instructions

Browse files
Files changed (1) hide show
  1. SETUP_GUIDE.md +205 -1
SETUP_GUIDE.md CHANGED
@@ -209,4 +209,208 @@
209
  - Regular backups
210
  - Monitor system health
211
  - Set up alerts
212
- - Plan for failures
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
209
  - Regular backups
210
  - Monitor system health
211
  - Set up alerts
212
+ - Plan for failures
213
+
214
+ ## Database Schema Setup
215
+
216
+ ### 1. Main Database (vbot_main)
217
+
218
+ 1. **Create Database**
219
+ ```sql
220
+ CREATE DATABASE vbot_main;
221
+ USE vbot_main;
222
+ ```
223
+
224
+ 2. **Create Customers Table**
225
+ ```sql
226
+ CREATE TABLE customers (
227
+ id INT AUTO_INCREMENT PRIMARY KEY,
228
+ name VARCHAR(100) NOT NULL,
229
+ company_name VARCHAR(100) NOT NULL,
230
+ email VARCHAR(100) UNIQUE NOT NULL,
231
+ api_key VARCHAR(64) UNIQUE NOT NULL,
232
+ is_active BOOLEAN DEFAULT TRUE,
233
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
234
+ updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
235
+ -- Database credentials for customer's own database
236
+ db_host VARCHAR(255),
237
+ db_port INT,
238
+ db_name VARCHAR(100),
239
+ db_user VARCHAR(100),
240
+ db_password VARCHAR(255)
241
+ );
242
+ ```
243
+
244
+ 3. **Create Indexes**
245
+ ```sql
246
+ CREATE INDEX idx_api_key ON customers(api_key);
247
+ CREATE INDEX idx_email ON customers(email);
248
+ CREATE INDEX idx_is_active ON customers(is_active);
249
+ ```
250
+
251
+ ### 2. Customer Database
252
+
253
+ 1. **Create Database**
254
+ ```sql
255
+ CREATE DATABASE customer_db_name;
256
+ USE customer_db_name;
257
+ ```
258
+
259
+ 2. **Create Call Records Table**
260
+ ```sql
261
+ CREATE TABLE call_records (
262
+ id VARCHAR(36) PRIMARY KEY,
263
+ customer_id INT NOT NULL,
264
+ caller_number VARCHAR(20) NOT NULL,
265
+ called_number VARCHAR(20) NOT NULL,
266
+ file_path VARCHAR(255),
267
+ transcription TEXT,
268
+ summary TEXT,
269
+ sentiment VARCHAR(20),
270
+ keywords TEXT,
271
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
272
+ updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
273
+ FOREIGN KEY (customer_id) REFERENCES customers(id)
274
+ );
275
+ ```
276
+
277
+ 3. **Create Indexes**
278
+ ```sql
279
+ CREATE INDEX idx_customer_id ON call_records(customer_id);
280
+ CREATE INDEX idx_created_at ON call_records(created_at);
281
+ CREATE INDEX idx_caller_number ON call_records(caller_number);
282
+ CREATE INDEX idx_called_number ON call_records(called_number);
283
+ ```
284
+
285
+ ### 3. Database User Setup
286
+
287
+ 1. **Main Database User**
288
+ ```sql
289
+ -- Create user for main database
290
+ CREATE USER 'vbot_admin'@'%' IDENTIFIED BY 'your_secure_password';
291
+ GRANT ALL PRIVILEGES ON vbot_main.* TO 'vbot_admin'@'%';
292
+ FLUSH PRIVILEGES;
293
+ ```
294
+
295
+ 2. **Customer Database User**
296
+ ```sql
297
+ -- Create user for customer database
298
+ CREATE USER 'customer_user'@'%' IDENTIFIED BY 'customer_secure_password';
299
+ GRANT ALL PRIVILEGES ON customer_db_name.* TO 'customer_user'@'%';
300
+ FLUSH PRIVILEGES;
301
+ ```
302
+
303
+ ### 4. Database Connection Testing
304
+
305
+ 1. **Test Main Database Connection**
306
+ ```bash
307
+ # Test connection
308
+ mysql -h your-main-db-host -u vbot_admin -p vbot_main
309
+
310
+ # Test queries
311
+ USE vbot_main;
312
+ SELECT * FROM customers;
313
+ ```
314
+
315
+ 2. **Test Customer Database Connection**
316
+ ```bash
317
+ # Test connection
318
+ mysql -h customer-db-host -u customer_user -p customer_db_name
319
+
320
+ # Test queries
321
+ USE customer_db_name;
322
+ SELECT * FROM call_records;
323
+ ```
324
+
325
+ ### 5. Database Backup Setup
326
+
327
+ 1. **Main Database Backup**
328
+ ```bash
329
+ # Create backup script
330
+ cat > backup_main.sh << 'EOF'
331
+ #!/bin/bash
332
+ BACKUP_DIR="/path/to/backups"
333
+ DATE=$(date +%Y%m%d_%H%M%S)
334
+
335
+ # Create backup
336
+ mysqldump -h your-main-db-host -u vbot_admin -p vbot_main > \
337
+ "$BACKUP_DIR/vbot_main_$DATE.sql"
338
+
339
+ # Compress backup
340
+ gzip "$BACKUP_DIR/vbot_main_$DATE.sql"
341
+
342
+ # Keep only last 7 days of backups
343
+ find $BACKUP_DIR -name "vbot_main_*.sql.gz" -mtime +7 -delete
344
+ EOF
345
+
346
+ # Make script executable
347
+ chmod +x backup_main.sh
348
+ ```
349
+
350
+ 2. **Customer Database Backup**
351
+ ```bash
352
+ # Create backup script
353
+ cat > backup_customer.sh << 'EOF'
354
+ #!/bin/bash
355
+ BACKUP_DIR="/path/to/backups"
356
+ DATE=$(date +%Y%m%d_%H%M%S)
357
+
358
+ # Create backup
359
+ mysqldump -h customer-db-host -u customer_user -p customer_db_name > \
360
+ "$BACKUP_DIR/customer_db_$DATE.sql"
361
+
362
+ # Compress backup
363
+ gzip "$BACKUP_DIR/customer_db_$DATE.sql"
364
+
365
+ # Keep only last 7 days of backups
366
+ find $BACKUP_DIR -name "customer_db_*.sql.gz" -mtime +7 -delete
367
+ EOF
368
+
369
+ # Make script executable
370
+ chmod +x backup_customer.sh
371
+ ```
372
+
373
+ ### 6. Database Monitoring
374
+
375
+ 1. **Set Up Monitoring Queries**
376
+ ```sql
377
+ -- Check database size
378
+ SELECT table_schema AS "Database",
379
+ ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)"
380
+ FROM information_schema.tables
381
+ GROUP BY table_schema;
382
+
383
+ -- Check table sizes
384
+ SELECT table_name AS "Table",
385
+ ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size (MB)"
386
+ FROM information_schema.tables
387
+ WHERE table_schema = "customer_db_name"
388
+ ORDER BY (data_length + index_length) DESC;
389
+
390
+ -- Check record counts
391
+ SELECT COUNT(*) FROM call_records;
392
+ ```
393
+
394
+ 2. **Set Up Alerts**
395
+ ```bash
396
+ # Create monitoring script
397
+ cat > monitor_db.sh << 'EOF'
398
+ #!/bin/bash
399
+
400
+ # Check database size
401
+ DB_SIZE=$(mysql -h customer-db-host -u customer_user -p -N -e "
402
+ SELECT ROUND(SUM(data_length + index_length) / 1024 / 1024, 2)
403
+ FROM information_schema.tables
404
+ WHERE table_schema = 'customer_db_name'
405
+ ")
406
+
407
+ # Alert if size exceeds 1GB
408
+ if (( $(echo "$DB_SIZE > 1024" | bc -l) )); then
409
+ echo "Database size exceeds 1GB: $DB_SIZE MB"
410
+ # Add your alert mechanism here (email, Slack, etc.)
411
+ fi
412
+ EOF
413
+
414
+ # Make script executable
415
+ chmod +x monitor_db.sh
416
+ ```