packages feed

sqel-0.0.1.0: lib/Sqel/Text/DbIdentifier.hs

module Sqel.Text.DbIdentifier where

import Data.List (dropWhileEnd)

import Sqel.SOP.Constraint (symbolString)
import Sqel.Text.Case (unCamelCase)
import Sqel.Text.Quote (dquote)

dbIdentifier :: String -> Text
dbIdentifier =
  unCamelCase '_' . dropWhile ('_' ==) . dropWhileEnd ('_' ==)

dbIdentifierT :: Text -> Text
dbIdentifierT =
  dbIdentifier . toString

quotedDbId :: Text -> Text
quotedDbId =
  dquote . dbIdentifierT

dbSymbol ::
  ∀ name .
  KnownSymbol name =>
  Text
dbSymbol =
  dbIdentifier (symbolString @name)