module Sqel.Names (
  module Sqel.Names,
  module Sqel.Names.Rename,
  module Sqel.Names.Set,
) where

import Sqel.Data.Codec (ColumnName (ColumnName))
import Sqel.Data.Dd (Dd, DdK)
import Sqel.Data.Sel (Sel)
import Sqel.Names.Rename
import Sqel.Names.Set
import Sqel.Text.DbIdentifier (dbSymbol)

ddName ::
   n .
  KnownSymbol n =>
  ColumnName
ddName :: forall (n :: Symbol). KnownSymbol n => ColumnName
ddName =
  Text -> ColumnName
ColumnName (forall (name :: Symbol). KnownSymbol name => Text
dbSymbol @n)

selAs ::
   (sel :: Sel) (s0 :: DdK) .
  Rename s0 (SetSel s0 sel) =>
  Dd s0 ->
  Dd (SetSel s0 sel)
selAs :: forall (sel :: Sel) (s0 :: DdK).
Rename s0 (SetSel s0 sel) =>
Dd s0 -> Dd (SetSel s0 sel)
selAs =
  forall (s0 :: DdK) (s1 :: DdK). Rename s0 s1 => Dd s0 -> Dd s1
rename

named ::
   (name :: Symbol) (s0 :: DdK) .
  Rename s0 (SetName s0 name) =>
  Dd s0 ->
  Dd (SetName s0 name)
named :: forall (name :: Symbol) (s0 :: DdK).
Rename s0 (SetName s0 name) =>
Dd s0 -> Dd (SetName s0 name)
named =
  forall (s0 :: DdK) (s1 :: DdK). Rename s0 s1 => Dd s0 -> Dd s1
rename

typeAs ::
   (name :: Symbol) (s0 :: DdK) .
  Rename2 s0 (SetTypeName s0 name) =>
  Dd s0 ->
  Dd (SetTypeName s0 name)
typeAs :: forall (name :: Symbol) (s0 :: DdK).
Rename2 s0 (SetTypeName s0 name) =>
Dd s0 -> Dd (SetTypeName s0 name)
typeAs =
  forall (s0 :: DdK) (s1 :: DdK). Rename2 s0 s1 => Dd s0 -> Dd s1
rename2