locals {
  normalized_prefix = trim(
    replace(replace(replace(lower(var.name_prefix), " ", "-"), "_", "-"), ".", "-"),
    "-"
  )
  effective_prefix = local.normalized_prefix != "" ? local.normalized_prefix : "vertex-ai"

  # account_id must be 6-30 chars, start with a letter, and contain only [a-z0-9-].
  service_account_id = substr("sa-${local.effective_prefix}-vertex-ai", 0, 30)
  sandbox_dataset_id = substr("sandbox_${replace(local.effective_prefix, "-", "_")}", 0, 1024)
}

resource "google_service_account" "vertex_ai_user" {
  project      = var.project_id
  account_id   = local.service_account_id
  display_name = var.display_name
  description  = var.description
}

resource "google_bigquery_dataset" "sa_sandbox" {
  project    = var.project_id
  dataset_id = local.sandbox_dataset_id
  location   = var.bigquery_location
}

