Restructure the monorepo into clear top-level directories: - backend/: Go module root (cmd, internal, pkg, configs, migrations, docs/swagger, scripts, tests, go.mod, Makefile, .air.toml) - deploy/: Docker (Dockerfile, docker-compose*), quickstart, fluentd - docs/: project documentation + reports/ (moved from repo root) - AGENTS.md: new AI coding-agent guide at repo root Update all references to the new layout: - Dockerfile: COPY backend/go.mod, COPY backend/ (context = repo root) - docker-compose files: context ../.., dockerfile deploy/docker/Dockerfile, env_file ../../.env, volume mounts ../../backend:/app - deploy/quickstart/compose.yaml: dockerfile deploy/docker/Dockerfile - CI: working-directory: backend for go commands, file deploy/docker/Dockerfile, coverage path backend/coverage.out, health_check backend/scripts/ - backend/Makefile: docker target uses -f ../deploy/docker/Dockerfile ../ - README: architecture tree, quickstart, config paths updated Move root stray scripts (rename_models.*, run_m11_tests.sh, verify_build.sh, gorm_bool_main.go) to backend/scripts/legacy/. All moves via git mv to preserve history. Build, vet, SQLite tests, and docker compose config verified.
38 lines
2.4 KiB
SQL
38 lines
2.4 KiB
SQL
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS display_id INTEGER;
|
|
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS contact_inbox_id INTEGER;
|
|
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS assignee_agent_bot_id INTEGER;
|
|
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS team_id INTEGER;
|
|
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS campaign_id INTEGER;
|
|
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS sla_policy_id INTEGER;
|
|
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS snoozed_until BIGINT;
|
|
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS additional_attributes JSONB DEFAULT '{}';
|
|
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS custom_attributes JSONB DEFAULT '{}';
|
|
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS agent_last_seen_at BIGINT;
|
|
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS assignee_last_seen_at BIGINT;
|
|
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS contact_last_seen_at BIGINT;
|
|
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS waiting_since BIGINT;
|
|
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS last_activity_at BIGINT;
|
|
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS first_reply_created_at BIGINT;
|
|
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS last_non_sys_msg_at BIGINT;
|
|
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS muted BOOLEAN DEFAULT FALSE;
|
|
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS resolved_at TIMESTAMP WITH TIME ZONE;
|
|
ALTER TABLE conversations ADD COLUMN IF NOT EXISTS resumed_at TIMESTAMP WITH TIME ZONE;
|
|
|
|
ALTER TABLE messages ADD COLUMN IF NOT EXISTS status VARCHAR(50) DEFAULT 'sent';
|
|
ALTER TABLE messages ADD COLUMN IF NOT EXISTS echo_id VARCHAR(255);
|
|
ALTER TABLE messages ADD COLUMN IF NOT EXISTS content_attributes JSONB DEFAULT '{}';
|
|
ALTER TABLE messages ADD COLUMN IF NOT EXISTS additional_attributes JSONB DEFAULT '{}';
|
|
ALTER TABLE messages ADD COLUMN IF NOT EXISTS external_source_ids JSONB DEFAULT '{}';
|
|
|
|
UPDATE conversations
|
|
SET display_id = numbered.display_id
|
|
FROM (
|
|
SELECT id, ROW_NUMBER() OVER (PARTITION BY account_id ORDER BY id)::integer AS display_id
|
|
FROM conversations
|
|
WHERE display_id IS NULL OR display_id = 0
|
|
) AS numbered
|
|
WHERE conversations.id = numbered.id;
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_conversations_account_display_id ON conversations(account_id, display_id) WHERE deleted_at IS NULL;
|
|
CREATE INDEX IF NOT EXISTS idx_messages_echo_id ON messages(echo_id) WHERE deleted_at IS NULL;
|