littleshop/CreateMultiBuysTable.cs
SysAdmin 622bdcf111 🔒 SECURITY: Emergency fixes and hardening
EMERGENCY FIXES:
 DELETE MockSilverPayService.cs - removed fake payment system
 REMOVE mock service registration - no fake payments possible
 GENERATE new JWT secret - replaced hardcoded key
 FIX HttpClient disposal - proper resource management

SECURITY HARDENING:
 ADD production guards - prevent mock services in production
 CREATE environment configs - separate dev/prod settings
 ADD config validation - fail fast on misconfiguration

IMPACT:
- Mock payment system completely eliminated
- JWT authentication now uses secure keys
- Production deployment now validated on startup
- Resource leaks fixed in TeleBot currency API

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-22 05:45:49 +01:00

53 lines
1.9 KiB
C#

using Microsoft.Data.Sqlite;
using System;
class Program
{
static void Main()
{
var connectionString = "Data Source=C:\\Production\\Source\\LittleShop\\LittleShop\\littleshop.db";
using (var connection = new SqliteConnection(connectionString))
{
connection.Open();
var createTableSql = @"
CREATE TABLE IF NOT EXISTS ProductMultiBuys (
Id TEXT PRIMARY KEY NOT NULL,
ProductId TEXT NOT NULL,
Name TEXT NOT NULL,
Description TEXT NOT NULL DEFAULT '',
Quantity INTEGER NOT NULL,
Price REAL NOT NULL,
PricePerUnit REAL NOT NULL,
SortOrder INTEGER NOT NULL DEFAULT 0,
IsActive INTEGER NOT NULL DEFAULT 1,
CreatedAt TEXT NOT NULL,
UpdatedAt TEXT NOT NULL,
FOREIGN KEY (ProductId) REFERENCES Products(Id) ON DELETE CASCADE
)";
using (var command = new SqliteCommand(createTableSql, connection))
{
command.ExecuteNonQuery();
Console.WriteLine("ProductMultiBuys table created successfully!");
}
// Create indexes
var createIndexSql1 = "CREATE INDEX IF NOT EXISTS IX_ProductMultiBuys_ProductId ON ProductMultiBuys(ProductId)";
var createIndexSql2 = "CREATE INDEX IF NOT EXISTS IX_ProductMultiBuys_IsActive ON ProductMultiBuys(IsActive)";
using (var command = new SqliteCommand(createIndexSql1, connection))
{
command.ExecuteNonQuery();
}
using (var command = new SqliteCommand(createIndexSql2, connection))
{
command.ExecuteNonQuery();
}
Console.WriteLine("Indexes created successfully!");
}
}
}