00001_clients_table.sql 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. -- +goose Up
  2. CREATE TABLE clients (
  3. id TEXT PRIMARY KEY,
  4. old_id TEXT,
  5. contractor BOOLEAN,
  6. full_name TEXT,
  7. type TEXT NOT NULL,
  8. email TEXT,
  9. legal_address TEXT,
  10. physical_address TEXT,
  11. note TEXT,
  12. reg_date TEXT,
  13. income_amount DECIMAL(19, 4),
  14. income_currency CHAR(3)
  15. );
  16. CREATE TABLE client_tags (
  17. client_id TEXT NOT NULL REFERENCES clients(id) ON DELETE CASCADE,
  18. tag TEXT NOT NULL,
  19. PRIMARY KEY (client_id, tag)
  20. );
  21. CREATE TABLE client_phones (
  22. client_id TEXT NOT NULL REFERENCES clients(id) ON DELETE CASCADE,
  23. phone TEXT NOT NULL,
  24. PRIMARY KEY (client_id, phone)
  25. );
  26. CREATE TABLE client_metadata (
  27. client_id TEXT NOT NULL REFERENCES clients(id) ON DELETE CASCADE,
  28. key TEXT NOT NULL,
  29. value TEXT NOT NULL,
  30. PRIMARY KEY (client_id, key)
  31. );
  32. -- Индексы для производительности
  33. CREATE INDEX idx_clients_type ON clients(type);
  34. CREATE INDEX idx_clients_income ON clients(income_amount);
  35. CREATE INDEX idx_clients_currency ON clients(income_currency);
  36. -- +goose Down
  37. DROP TABLE client_metadata;
  38. DROP TABLE client_phones;
  39. DROP TABLE client_tags;
  40. DROP TABLE clients;