PostgresJdbcContext

class PostgresJdbcContext[N <: NamingStrategy](val naming: N, val dataSource: DataSource & Closeable) extends JdbcContext[PostgresDialect, N] with PostgresJdbcContextBase[N]
trait ArrayEncoding
class JdbcContext[PostgresDialect, N]
trait ContextVerbTranslate[PostgresDialect, N]
trait ContextTranslateMacro[PostgresDialect, N]
trait ContextTranslateProto[PostgresDialect, N]
trait JdbcContextBase[PostgresDialect, N]
trait ContextVerbPrepareLambda[PostgresDialect, N]
trait JdbcContextVerbPrepare[PostgresDialect, N]
trait ContextVerbPrepare[PostgresDialect, N]
trait JdbcContextVerbExecute[PostgresDialect, N]
trait JdbcContextTypes[PostgresDialect, N]
trait Decoders
trait Encoders
trait SqlContext[PostgresDialect, N]
trait Context[PostgresDialect, N]
trait Closeable
trait AutoCloseable
trait EncodingDsl
trait LowPriorityImplicits
trait ProtoContext[PostgresDialect, N]
trait RowContext
class Object
trait Matchable
class Any

Type members

Inherited classlikes

case
class BatchGroup(string: String, prepare: List[Prepare])
Inherited from
RowContext
case
class BatchGroupReturning(string: String, returningBehavior: ReturnAction, prepare: List[Prepare])
Inherited from
RowContext
Inherited from
Context
case
class JdbcDecoder[T](decoder: () => T)
Inherited from
Decoders
case
class JdbcEncoder[T](sqlType: Int, encoder: () => T)
Inherited from
Encoders

Inherited types

type BaseDecoder[T] = GenericDecoder[ResultRow, Session, T, Specific]
Inherited from
EncodingDsl
type BaseEncoder[T] = GenericEncoder[T, PrepareRow, Session]
Inherited from
EncodingDsl
type CBF[T, Col] = Factory[T, Col]
Inherited from
ArrayEncoding
type ColumnResolver = GenericColumnResolver[ResultRow]
Inherited from
EncodingDsl
type Decoder[T] = JdbcDecoder[T]
Inherited from
Decoders
type DecoderMethod[T] = (Int, ResultRow, Session) => T
Inherited from
EncodingDsl
type Encoder[T] = JdbcEncoder[T]
Inherited from
Encoders
type EncoderMethod[T] = (Int, T, PrepareRow, Session) => PrepareRow
Inherited from
EncodingDsl
type Extractor[T] = (ResultRow, Session) => T
Inherited from
RowContext
type Index = Int
Inherited from
JdbcContextTypes
type Prepare = (PrepareRow, Session) => (List[Any], PrepareRow)
Inherited from
RowContext
override
type PrepareActionResult = Connection => Result[PreparedStatement]
Inherited from
JdbcContextBase
override
type PrepareBatchActionResult = Connection => Result[List[PreparedStatement]]
Inherited from
JdbcContextBase
override
type PrepareQueryResult = Connection => Result[PreparedStatement]
Inherited from
JdbcContextBase
type PrepareRow = PreparedStatement
Inherited from
JdbcContextTypes
override
type Result[T] = T
Inherited from
JdbcContext
type ResultRow = ResultSet
Inherited from
JdbcContextTypes
type RowTyper[T] = GenericRowTyper[ResultRow, T]
Inherited from
EncodingDsl
override
type RunActionResult = Long
Inherited from
JdbcContext
override
Inherited from
JdbcContext
override
type RunBatchActionResult = List[Long]
Inherited from
JdbcContext
override
Inherited from
JdbcContext
override
type RunQueryResult[T] = List[T]
Inherited from
JdbcContext
override
Inherited from
JdbcContext
override
type Runner = Unit
Inherited from
JdbcContext
type RunnerBehavior <: RunnerSummoningBehavior
Inherited from
ContextTranslateMacro
type Session = Connection
Inherited from
JdbcContextTypes
override
type TranslateResult[T] = T
Inherited from
ContextVerbTranslate
override
type TranslateRunner = Unit
Inherited from
JdbcContext

Value members

Constructors

def this(naming: N, config: JdbcContextConfig)
def this(naming: N, config: Config)
def this(naming: N, configPrefix: String)

Inherited methods

Inherited from
ContextVerbPrepare

Internal API that cannot be made private due to how inline functions

Internal API that cannot be made private due to how inline functions

Inherited from
ContextTranslateMacro
def arrayDecoder[I, O, Col <: Seq[O]](mapper: I => O)(implicit bf: Factory[O, Col], tag: ClassTag[I]): JdbcDecoder[Col]

Generic encoder for JDBC arrays.

Generic encoder for JDBC arrays.

Type Params
Col

seq type

I

raw type retrieved form JDBC array

O

mapped type fulfilled in decoder's collection

Value Params
bf

builder factory is needed to create instances of decoder's collection

mapper

retrieved raw types fro JDBC array may be mapped via this mapper to satisfy encoder type

Returns

JDBC array decoder

Inherited from
ArrayDecoders
def arrayEncoder[T, Col <: Seq[T]](jdbcType: String, mapper: T => AnyRef): JdbcEncoder[Col]

Generic encoder for JDBC arrays.

Generic encoder for JDBC arrays.

Type Params
Col

seq type

T

element type

Value Params
jdbcType

JDBC specific type identification, may be various regarding to JDBC driver

mapper

jdbc array accepts AnyRef objects hence a mapper is needed. If input type of an element of collection is not comfortable with jdbcType then use this mapper to transform to appropriate type before casting to AnyRef

Returns

JDBC array encoder

Inherited from
ArrayEncoders
def arrayRawDecoder[T : ClassTag, Col <: Seq[T]](implicit evidence$1: ClassTag[T], bf: Factory[T, Col]): JdbcDecoder[Col]

Creates JDBC array decoder for type T which is already supported by database as array element.

Creates JDBC array decoder for type T which is already supported by database as array element.

Type Params
Col

seq type

T

element type

Value Params
bf

builder factory is needed to create instances of decoder's collection

Returns

JDBC array decoder

Inherited from
ArrayDecoders
def arrayRawEncoder[T, Col <: Seq[T]](jdbcType: Int): JdbcEncoder[Col]

Transform jdbcType int using parseJdbcType and calls overloaded method to create Encoder

Transform jdbcType int using parseJdbcType and calls overloaded method to create Encoder

Value Params
jdbcType

java.sql.Types

See also

arrayRawEncoder(jdbcType: String)

JdbcContext#parseJdbcType(jdbcType: String)

Inherited from
ArrayEncoders
def arrayRawEncoder[T, Col <: Seq[T]](jdbcType: String): JdbcEncoder[Col]

Creates JDBC array encoder for type T which is already supported by database as array element.

Creates JDBC array encoder for type T which is already supported by database as array element.

Type Params
Col

seq type

T

element type

Value Params
jdbcType

JDBC specific type identification, may be various regarding to JDBC driver

Returns

JDBC array encoder

Inherited from
ArrayEncoders
override
def close(): Unit
Definition Classes
JdbcContext -> Context -> Closeable -> AutoCloseable
Inherited from
JdbcContext
def constructPrepareAction(f: Connection => Result[PreparedStatement]): Connection => Result[PreparedStatement]
Inherited from
JdbcContextBase
def constructPrepareBatchAction(f: Connection => Result[List[PreparedStatement]]): Connection => Result[List[PreparedStatement]]
Inherited from
JdbcContextBase
def constructPrepareQuery(f: Connection => Result[PreparedStatement]): Connection => Result[PreparedStatement]
Inherited from
JdbcContextBase
override protected
Definition Classes
JdbcContext -> Context
Inherited from
JdbcContext
def decoder[T](f: ResultRow => Index => T): JdbcDecoder[T]
Inherited from
Decoders
def decoder[T](d: (Int, ResultRow, Session) => T): JdbcDecoder[T]
Inherited from
Decoders
def encoder[T](sqlType: Int, f: PrepareRow => (Index, T) => Unit): JdbcEncoder[T]
Inherited from
Encoders
def encoder[T](sqlType: Int, f: (Index, T, PrepareRow) => Unit): JdbcEncoder[T]
Inherited from
Encoders
override
def executeAction(sql: String, prepare: Prepare)(info: ExecutionInfo, dc: Runner): Result[Long]
Definition Classes
JdbcContextVerbExecute -> ProtoContext
Inherited from
JdbcContextVerbExecute
override
def executeActionReturning[O](sql: String, prepare: Prepare, extractor: () => O, returningBehavior: ReturnAction)(info: ExecutionInfo, dc: Runner): Result[O]
Definition Classes
JdbcContextVerbExecute -> ProtoContext
Inherited from
JdbcContextVerbExecute
def executeBatchAction(groups: List[BatchGroup])(info: ExecutionInfo, dc: Runner): Result[List[Long]]
def executeBatchActionReturning[T](groups: List[BatchGroupReturning], extractor: () => T)(info: ExecutionInfo, dc: Runner): Result[List[T]]
override
def executeQuery[T](sql: String, prepare: Prepare, extractor: () => T)(info: ExecutionInfo, dc: Runner): Result[List[T]]
Definition Classes
JdbcContextVerbExecute -> ProtoContext
Inherited from
JdbcContextVerbExecute
override
def executeQuerySingle[T](sql: String, prepare: Prepare, extractor: () => T)(info: ExecutionInfo, dc: Runner): Result[T]
Definition Classes
JdbcContextVerbExecute -> ProtoContext
Inherited from
JdbcContextVerbExecute
protected
def handleSingleResult[T](list: List[T]): T
Inherited from
Context
protected
def handleSingleWrappedResult[T](list: Result[List[T]]): Result[T]
inline
def lift[T](inline runtimeValue: T): T
Inherited from
Context
inline
def liftQuery[U <: ([_] =>> Iterable[_]), T](inline runtimeValue: U[T]): Query[T]
Inherited from
Context
protected
def mappedBaseDecoder[Base, Mapped](mapped: MappedEncoding[Base, Mapped], decoder: () => Base): () => Mapped
Inherited from
EncodingDsl
protected
def mappedBaseEncoder[Mapped, Base](mapped: MappedEncoding[Mapped, Base], encoder: () => Base): () => Mapped
Inherited from
EncodingDsl
override
def parseJdbcType(intType: Int): String
Definition Classes
Inherited from
PostgresJdbcTypes
@targetName("runPrepareBatchAction")
inline
def prepare[I, A <: Action[I] & QAC[I, Nothing]](inline quoted: Quoted[BatchAction[A]]): PrepareBatchActionResult
Inherited from
ContextVerbPrepare
@targetName("runPrepareAction")
inline
def prepare[E](inline quoted: Quoted[Action[E]]): PrepareActionResult
Inherited from
ContextVerbPrepare
@targetName("runPrepareQuerySingle")
inline
def prepare[T](inline quoted: Quoted[T]): PrepareQueryResult
Inherited from
ContextVerbPrepare
@targetName("runPrepareQuery")
inline
def prepare[T](inline quoted: Quoted[Query[T]]): PrepareQueryResult
Inherited from
ContextVerbPrepare
def prepareAction(sql: String, prepare: Prepare)(executionInfo: ExecutionInfo, dc: Runner): PrepareActionResult
def prepareBatchAction(groups: List[BatchGroup])(executionInfo: ExecutionInfo, dc: Runner): PrepareBatchActionResult
@tailrec
final protected
def prepareParam(param: Any): String
Inherited from
ContextTranslateProto
def prepareQuery(sql: String, prepare: Prepare)(executionInfo: ExecutionInfo, dc: Runner): PrepareQueryResult
def prepareSingle(sql: String, prepare: Prepare)(executionInfo: ExecutionInfo, dc: Runner): Connection => Result[PreparedStatement]
protected
def prepareWithReturning(sql: String, conn: Connection, returningBehavior: ReturnAction): PreparedStatement
def probe(sql: String): Try[Result[Boolean]]
Inherited from
JdbcContext
override
def push[A, B](result: A)(f: A => B): B
Definition Classes
JdbcContext -> ContextVerbTranslate -> ContextTranslateProto -> JdbcContextVerbPrepare -> JdbcContextVerbExecute
Inherited from
JdbcContext
@targetName("runBatchActionReturning")
inline
def run[I, T, A <: Action[I] & QAC[I, T]](inline quoted: Quoted[BatchAction[A]]): List[T]
Inherited from
JdbcContext
@targetName("runBatchAction")
inline
def run[I, A <: Action[I] & QAC[I, Nothing]](inline quoted: Quoted[BatchAction[A]]): List[Long]
Inherited from
JdbcContext
@targetName("runActionReturning")
inline
def run[E, T](inline quoted: Quoted[ActionReturning[E, T]]): T
Inherited from
JdbcContext
@targetName("runAction")
inline
def run[E](inline quoted: Quoted[Action[E]]): Long
Inherited from
JdbcContext
@targetName("runQuerySingle")
inline
def run[T](inline quoted: Quoted[T]): T
Inherited from
JdbcContext
@targetName("runQuery")
inline
def run[T](inline quoted: Quoted[Query[T]], inline wrap: OuterSelectWrap): List[T]
Inherited from
JdbcContext
@targetName("runQueryDefault")
inline
def run[T](inline quoted: Quoted[Query[T]]): List[T]
Inherited from
JdbcContext
override
def seq[A](list: List[A]): List[A]
Definition Classes
JdbcContext -> ContextVerbTranslate -> ContextTranslateProto -> JdbcContextVerbPrepare -> JdbcContextVerbExecute
Inherited from
JdbcContext
def transaction[T](f: => T): Result[T]
Inherited from
JdbcContext
@targetName("translateBatchActionReturning")
inline
def translate[I, T, A <: Action[I] & QAC[I, T]](inline quoted: Quoted[BatchAction[A]], inline prettyPrint: Boolean): TranslateResult[List[String]]
Inherited from
ContextTranslateMacro
@targetName("translateBatchActionReturning")
inline
def translate[I, T, A <: Action[I] & QAC[I, T]](inline quoted: Quoted[BatchAction[A]]): TranslateResult[List[String]]
Inherited from
ContextTranslateMacro
@targetName("translateBatchAction")
inline
def translate[I, A <: Action[I] & QAC[I, Nothing]](inline quoted: Quoted[BatchAction[A]], inline prettyPrint: Boolean): TranslateResult[List[String]]
Inherited from
ContextTranslateMacro
@targetName("translateBatchAction")
inline
def translate[I, A <: Action[I] & QAC[I, Nothing]](inline quoted: Quoted[BatchAction[A]]): TranslateResult[List[String]]
Inherited from
ContextTranslateMacro
@targetName("translateActionReturning")
inline
def translate[E, T](inline quoted: Quoted[ActionReturning[E, T]], inline prettyPrint: Boolean): TranslateResult[String]
Inherited from
ContextTranslateMacro
@targetName("translateActionReturning")
inline
def translate[E, T](inline quoted: Quoted[ActionReturning[E, T]]): TranslateResult[String]
Inherited from
ContextTranslateMacro
@targetName("translateAction")
inline
def translate[E](inline quoted: Quoted[Action[E]], inline prettyPrint: Boolean): TranslateResult[String]
Inherited from
ContextTranslateMacro
@targetName("translateAction")
inline
def translate[E](inline quoted: Quoted[Action[E]]): TranslateResult[String]
Inherited from
ContextTranslateMacro
@targetName("translateQuerySingle")
inline
def translate[T](inline quoted: Quoted[T], inline prettyPrint: Boolean): TranslateResult[String]
Inherited from
ContextTranslateMacro
@targetName("translateQuerySingle")
inline
def translate[T](inline quoted: Quoted[T]): TranslateResult[String]
Inherited from
ContextTranslateMacro
@targetName("translateQuery")
inline
def translate[T](inline quoted: Quoted[Query[T]], inline prettyPrint: Boolean): TranslateResult[String]
Inherited from
ContextTranslateMacro
@targetName("translateQuery")
inline
def translate[T](inline quoted: Quoted[Query[T]]): TranslateResult[String]
Inherited from
ContextTranslateMacro
def translateBatchQueryEndpoint(groups: List[BatchGroup], prettyPrint: Boolean)(executionInfo: ExecutionInfo, dc: TranslateRunner): TranslateResult[List[String]]
Inherited from
ContextTranslateProto
def translateBatchQueryReturningEndpoint(groups: List[BatchGroupReturning], prettyPrint: Boolean)(executionInfo: ExecutionInfo, dc: TranslateRunner): TranslateResult[List[String]]
Inherited from
ContextTranslateProto
def translateQueryEndpoint[T](statement: String, prepare: Prepare, extractor: () => T, prettyPrint: Boolean)(executionInfo: ExecutionInfo, dc: TranslateRunner): TranslateResult[String]
Inherited from
ContextTranslateProto
protected
def withConnection[T](f: Connection => Result[T]): Result[T]
Inherited from
JdbcContext
protected
def withConnectionWrapped[T](f: Connection => T): Result[T]
override
def wrap[T](t: => T): T
Definition Classes
JdbcContext -> ContextVerbTranslate -> ContextTranslateProto -> JdbcContextVerbPrepare -> JdbcContextVerbExecute
Inherited from
JdbcContext

Concrete fields

val dataSource: DataSource & Closeable
val naming: N

Inherited fields

protected
val currentConnection: DynamicVariable[Option[Connection]]
Inherited from
JdbcContext
protected
val dateTimeZone: TimeZone
Inherited from
JdbcContextTypes
Inherited from
RowContext
protected
val identityPrepare: Prepare
Inherited from
RowContext
val idiom: PostgresDialect
Inherited from
PostgresJdbcTypes

Extensions

Inherited extensions

extension [T](q: Query[T])
inline
def filterByKeys(inline map: Map[String, String]): Query[T]

When using this with FilterColumns make sure it comes FIRST. Otherwise the columns are you filtering may have been nullified in the SQL before the filteration has actually happened.

When using this with FilterColumns make sure it comes FIRST. Otherwise the columns are you filtering may have been nullified in the SQL before the filteration has actually happened.

Inherited from
Context
inline
def filterColumns(inline columns: List[String]): Query[T]
Inherited from
Context

Implicits

Inherited implicits

implicit inline
def anyValDecoder[Cls <: AnyVal]: JdbcDecoder[Cls]
Inherited from
LowPriorityImplicits
implicit inline
def anyValEncoder[Cls <: AnyVal]: JdbcEncoder[Cls]
Inherited from
LowPriorityImplicits
implicit
def arrayBigDecimalDecoder[Col <: Seq[BigDecimal]](implicit bf: Factory[BigDecimal, Col]): JdbcDecoder[Col]
Inherited from
ArrayDecoders
implicit
def arrayBigDecimalEncoder[Col <: Seq[BigDecimal]]: JdbcEncoder[Col]
Inherited from
ArrayEncoders
implicit
def arrayBooleanDecoder[Col <: Seq[Boolean]](implicit bf: Factory[Boolean, Col]): JdbcDecoder[Col]
Inherited from
ArrayDecoders
implicit
def arrayBooleanEncoder[Col <: Seq[Boolean]]: JdbcEncoder[Col]
Inherited from
ArrayEncoders
implicit
def arrayByteDecoder[Col <: Seq[Byte]](implicit bf: Factory[Byte, Col]): JdbcDecoder[Col]
Inherited from
ArrayDecoders
implicit
def arrayByteEncoder[Col <: Seq[Byte]]: JdbcEncoder[Col]
Inherited from
ArrayEncoders
implicit
def arrayDateDecoder[Col <: Seq[Date]](implicit bf: Factory[Date, Col]): JdbcDecoder[Col]
Inherited from
ArrayDecoders
implicit
def arrayDateEncoder[Col <: Seq[Date]]: JdbcEncoder[Col]
Inherited from
ArrayEncoders
implicit
def arrayDoubleDecoder[Col <: Seq[Double]](implicit bf: Factory[Double, Col]): JdbcDecoder[Col]
Inherited from
ArrayDecoders
implicit
def arrayDoubleEncoder[Col <: Seq[Double]]: JdbcEncoder[Col]
Inherited from
ArrayEncoders
implicit
def arrayFloatDecoder[Col <: Seq[Float]](implicit bf: Factory[Float, Col]): JdbcDecoder[Col]
Inherited from
ArrayDecoders
implicit
def arrayFloatEncoder[Col <: Seq[Float]]: JdbcEncoder[Col]
Inherited from
ArrayEncoders
implicit
def arrayIntDecoder[Col <: Seq[Int]](implicit bf: Factory[Int, Col]): JdbcDecoder[Col]
Inherited from
ArrayDecoders
implicit
def arrayIntEncoder[Col <: Seq[Int]]: JdbcEncoder[Col]
Inherited from
ArrayEncoders
implicit
def arrayLocalDateDecoder[Col <: Seq[LocalDate]](implicit bf: Factory[LocalDate, Col]): JdbcDecoder[Col]
Inherited from
ArrayDecoders
implicit
def arrayLocalDateEncoder[Col <: Seq[LocalDate]]: JdbcEncoder[Col]
Inherited from
ArrayEncoders
implicit
def arrayLongDecoder[Col <: Seq[Long]](implicit bf: Factory[Long, Col]): JdbcDecoder[Col]
Inherited from
ArrayDecoders
implicit
def arrayLongEncoder[Col <: Seq[Long]]: JdbcEncoder[Col]
Inherited from
ArrayEncoders
implicit
def arrayMappedDecoder[I, O, Col <: (Seq)](implicit mapped: MappedEncoding[I, O], d: JdbcDecoder[Seq[I]], bf: Factory[O, Col[O]]): JdbcDecoder[Col[O]]
Inherited from
ArrayEncoding
implicit
def arrayMappedEncoder[I, O, Col <: (Seq)](implicit mapped: MappedEncoding[I, O], e: JdbcEncoder[Seq[O]]): JdbcEncoder[Col[I]]
Inherited from
ArrayEncoding
implicit
def arrayShortDecoder[Col <: Seq[Short]](implicit bf: Factory[Short, Col]): JdbcDecoder[Col]
Inherited from
ArrayDecoders
implicit
def arrayShortEncoder[Col <: Seq[Short]]: JdbcEncoder[Col]
Inherited from
ArrayEncoders
implicit
def arrayStringDecoder[Col <: Seq[String]](implicit bf: Factory[String, Col]): JdbcDecoder[Col]
Inherited from
ArrayDecoders
implicit
def arrayStringEncoder[Col <: Seq[String]]: JdbcEncoder[Col]
Inherited from
ArrayEncoders
implicit
def arrayTimestampDecoder[Col <: Seq[Timestamp]](implicit bf: Factory[Timestamp, Col]): JdbcDecoder[Col]
Inherited from
ArrayDecoders
implicit
def arrayTimestampEncoder[Col <: Seq[Timestamp]]: JdbcEncoder[Col]
Inherited from
ArrayEncoders
implicit
Inherited from
Decoders
implicit
Inherited from
Encoders
implicit
Inherited from
BooleanObjectEncoding
implicit
Inherited from
BooleanObjectEncoding
implicit
val byteArrayDecoder: JdbcDecoder[Array[Byte]]
Inherited from
Decoders
implicit
val byteArrayEncoder: JdbcEncoder[Array[Byte]]
Inherited from
Encoders
implicit
Inherited from
Decoders
implicit
Inherited from
Encoders
implicit
Inherited from
Decoders
implicit
Inherited from
Encoders
implicit inline
def dec[T]: GenericDecoder[ResultRow, Session, T, Generic]
Inherited from
Context
implicit
Inherited from
Decoders
implicit
Inherited from
Encoders
implicit
Inherited from
Decoders
implicit
Inherited from
Encoders
implicit
Inherited from
Decoders
implicit
Inherited from
Encoders
implicit
Inherited from
Decoders
implicit
Inherited from
Encoders
implicit
val localDateTimeDecoder: JdbcDecoder[LocalDateTime]
Inherited from
Decoders
implicit
val localDateTimeEncoder: JdbcEncoder[LocalDateTime]
Inherited from
Encoders
implicit
Inherited from
Decoders
implicit
Inherited from
Encoders
implicit
def mappedDecoder[I, O](implicit mapped: MappedEncoding[I, O], d: JdbcDecoder[I]): JdbcDecoder[O]
Inherited from
Decoders
implicit override
def mappedEncoder[I, O](implicit mapped: MappedEncoding[I, O], e: JdbcEncoder[O]): JdbcEncoder[I]
Definition Classes
Encoders -> EncodingDsl
Inherited from
Encoders
implicit
def optionDecoder[T](implicit d: JdbcDecoder[T]): JdbcDecoder[Option[T]]
Inherited from
Decoders
implicit
def optionEncoder[T](implicit d: JdbcEncoder[T]): JdbcEncoder[Option[T]]
Inherited from
Encoders
implicit
Inherited from
Decoders
implicit
Inherited from
Encoders
implicit
Inherited from
Decoders
implicit
Inherited from
Encoders
implicit
Inherited from
UUIDObjectEncoding
implicit
Inherited from
UUIDObjectEncoding