Class

io.chrisdavenport.fuuid.annotation

DeriveId

Related Doc: package annotation

Permalink

macro class DeriveId extends Annotation with StaticAnnotation

This annotation can be used on any kind of object to automatically create an inner Id tagged FUUID type with convenient methods for its creation. It also provides implicit instances for cats' Hash, Order and Show type-classes. All these instances are available in the enclosing object.

The deriveMeta parameter can be used to control whether to automatically derive (by setting it to true) a doobie's Meta instance for the generated Id type (a dependency with fuuid-doobie and doobie-postgres will be necessary).

Annotations
@compileTimeOnly( ... ) @silent( "never used" )
Source
DeriveId.scala
Example:
  1. For an object named User

    object User {
       trait IdTag
       type Id = shapeless.tag.@@[FUUID, IdTag]
       object Id {
           //Creates a new `Id` from a `FUUID`
           def apply(fuuid: FUUID): User.Id = ???
           //Creates a new `Id` from an `UUID` literal. This method
           //uses a macro to compile check the literal value
           def apply(s: String): User.Id = ???
           //Creates a random `Id` wrapped in an `F`
           def random[F[_]: cats.effect.Sync]: F[User.Id] = ???
           object Unsafe {
             //Creates an unwrapped random `Id`
             def random: User.Id = ???
           }
       }
       implicit val IdHashOrderShowInstances: Hash[User.Id]
         with Order[User.Id] with Show[User.Id] = ???
       //If `deriveMeta` is `true`
       implicit val IdMetaInstance: Meta[User.Id] = ???
    }
Linear Supertypes
StaticAnnotation, Annotation, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. DeriveId
  2. StaticAnnotation
  3. Annotation
  4. AnyRef
  5. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new DeriveId(deriveMeta: Boolean = false)

    Permalink

    deriveMeta

    Set this value to true to automatically derive a doobie's Meta instance for the generated Id type (a dependency with fuuid-doobie and doobie-postgres will be necessary). Defaults to false.

Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  5. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  6. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  7. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  8. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  9. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  10. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  11. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  12. macro def macroTransform(annottees: Any*): Any

    Permalink
  13. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  14. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  15. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  16. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  17. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  18. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  19. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  20. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from StaticAnnotation

Inherited from Annotation

Inherited from AnyRef

Inherited from Any

Ungrouped