Table thoughts {
  id bigserial [pk]
  guid uuid [unique, not null, default: `gen_random_uuid()`]
  content text [not null]
  metadata jsonb [default: `'{}'::jsonb`]
  created_at timestamptz [default: `now()`]
  updated_at timestamptz [default: `now()`]
  project_id uuid [ref: > projects.guid]
  archived_at timestamptz
}

Table projects {
  id bigserial [pk]
  guid uuid [unique, not null, default: `gen_random_uuid()`]
  name text [unique, not null]
  description text
  created_at timestamptz [default: `now()`]
  last_active_at timestamptz [default: `now()`]
}

Table thought_links {
  from_id bigint [not null, ref: > thoughts.id]
  to_id bigint [not null, ref: > thoughts.id]
  relation text [not null]
  created_at timestamptz [default: `now()`]

  indexes {
    (from_id, to_id, relation) [pk]
    from_id
    to_id
  }
}

Table embeddings {
  id bigserial [pk]
  guid uuid [unique, not null, default: `gen_random_uuid()`]
  thought_id uuid [not null, ref: > thoughts.guid]
  model text [not null]
  dim int [not null]
  embedding vector [not null]
  created_at timestamptz [default: `now()`]
  updated_at timestamptz [default: `now()`]

  indexes {
    (thought_id, model) [unique]
    thought_id
  }
}
