000002_create_users.up.sql 1.1 KB

12345678910111213141516171819202122232425262728293031
  1. CREATE TABLE users (
  2. id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  3. email VARCHAR(255) UNIQUE NOT NULL,
  4. password_hash VARCHAR(255) NOT NULL,
  5. role VARCHAR(20) NOT NULL DEFAULT 'customer'
  6. CHECK (role IN ('superadmin', 'moderator', 'landlord', 'executor', 'customer')),
  7. status VARCHAR(20) NOT NULL DEFAULT 'active'
  8. CHECK (status IN ('active', 'banned', 'pending_verification')),
  9. name VARCHAR(255),
  10. avatar_url TEXT,
  11. phone VARCHAR(20),
  12. bio TEXT,
  13. country VARCHAR(10),
  14. created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
  15. updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
  16. deleted_at TIMESTAMPTZ
  17. );
  18. CREATE INDEX idx_users_role ON users(role);
  19. CREATE INDEX idx_users_status ON users(status);
  20. CREATE TABLE refresh_tokens (
  21. id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  22. user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
  23. token_hash VARCHAR(255) NOT NULL,
  24. expires_at TIMESTAMPTZ NOT NULL,
  25. created_at TIMESTAMPTZ NOT NULL DEFAULT now()
  26. );
  27. CREATE UNIQUE INDEX idx_refresh_tokens_token_hash ON refresh_tokens(token_hash);
  28. CREATE INDEX idx_refresh_tokens_user_id ON refresh_tokens(user_id);