arbiter-core-0.1.0.0: Core types and logic for PostgreSQL-backed job queue
Safe HaskellNone
LanguageGHC2024

Arbiter.Core.CronSchedule

Description

Types for the cron_schedules table.

The table stores both the code-defined defaults and user overrides separately. On worker init, only the default_* columns are upserted -- user overrides (override_*, enabled) are preserved.

Synopsis

Types

data CronScheduleRow Source #

A row from the cron_schedules table.

Constructors

CronScheduleRow 

Fields

Instances

Instances details
FromJSON CronScheduleRow Source # 
Instance details

Defined in Arbiter.Core.CronSchedule

ToJSON CronScheduleRow Source # 
Instance details

Defined in Arbiter.Core.CronSchedule

Generic CronScheduleRow Source # 
Instance details

Defined in Arbiter.Core.CronSchedule

Associated Types

type Rep CronScheduleRow 
Instance details

Defined in Arbiter.Core.CronSchedule

type Rep CronScheduleRow = D1 ('MetaData "CronScheduleRow" "Arbiter.Core.CronSchedule" "arbiter-core-0.1.0.0-inplace" 'False) (C1 ('MetaCons "CronScheduleRow" 'PrefixI 'True) (((S1 ('MetaSel ('Just "name") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: (S1 ('MetaSel ('Just "defaultExpression") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "defaultOverlap") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))) :*: (S1 ('MetaSel ('Just "defaultTimezone") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: (S1 ('MetaSel ('Just "overrideExpression") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "overrideOverlap") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text))))) :*: ((S1 ('MetaSel ('Just "overrideTimezone") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: (S1 ('MetaSel ('Just "enabled") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "lastFiredAt") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe UTCTime)))) :*: (S1 ('MetaSel ('Just "lastCheckedAt") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe UTCTime)) :*: (S1 ('MetaSel ('Just "createdAt") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UTCTime) :*: S1 ('MetaSel ('Just "updatedAt") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UTCTime))))))
Show CronScheduleRow Source # 
Instance details

Defined in Arbiter.Core.CronSchedule

Eq CronScheduleRow Source # 
Instance details

Defined in Arbiter.Core.CronSchedule

type Rep CronScheduleRow Source # 
Instance details

Defined in Arbiter.Core.CronSchedule

type Rep CronScheduleRow = D1 ('MetaData "CronScheduleRow" "Arbiter.Core.CronSchedule" "arbiter-core-0.1.0.0-inplace" 'False) (C1 ('MetaCons "CronScheduleRow" 'PrefixI 'True) (((S1 ('MetaSel ('Just "name") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: (S1 ('MetaSel ('Just "defaultExpression") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "defaultOverlap") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))) :*: (S1 ('MetaSel ('Just "defaultTimezone") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: (S1 ('MetaSel ('Just "overrideExpression") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "overrideOverlap") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text))))) :*: ((S1 ('MetaSel ('Just "overrideTimezone") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)) :*: (S1 ('MetaSel ('Just "enabled") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "lastFiredAt") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe UTCTime)))) :*: (S1 ('MetaSel ('Just "lastCheckedAt") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe UTCTime)) :*: (S1 ('MetaSel ('Just "createdAt") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UTCTime) :*: S1 ('MetaSel ('Just "updatedAt") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UTCTime))))))

data CronScheduleUpdate Source #

Patch update for a cron schedule.

Each field uses Maybe (Maybe a):

  • Nothing = don't change
  • Just Nothing = reset to default (set column to NULL)
  • Just (Just x) = set to x

Instances

Instances details
FromJSON CronScheduleUpdate Source # 
Instance details

Defined in Arbiter.Core.CronSchedule

ToJSON CronScheduleUpdate Source # 
Instance details

Defined in Arbiter.Core.CronSchedule

Generic CronScheduleUpdate Source # 
Instance details

Defined in Arbiter.Core.CronSchedule

Associated Types

type Rep CronScheduleUpdate 
Instance details

Defined in Arbiter.Core.CronSchedule

type Rep CronScheduleUpdate = D1 ('MetaData "CronScheduleUpdate" "Arbiter.Core.CronSchedule" "arbiter-core-0.1.0.0-inplace" 'False) (C1 ('MetaCons "CronScheduleUpdate" 'PrefixI 'True) ((S1 ('MetaSel ('Just "overrideExpression") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (Maybe Text))) :*: S1 ('MetaSel ('Just "overrideOverlap") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (Maybe Text)))) :*: (S1 ('MetaSel ('Just "overrideTimezone") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (Maybe Text))) :*: S1 ('MetaSel ('Just "enabled") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Bool)))))
Show CronScheduleUpdate Source # 
Instance details

Defined in Arbiter.Core.CronSchedule

Eq CronScheduleUpdate Source # 
Instance details

Defined in Arbiter.Core.CronSchedule

type Rep CronScheduleUpdate Source # 
Instance details

Defined in Arbiter.Core.CronSchedule

type Rep CronScheduleUpdate = D1 ('MetaData "CronScheduleUpdate" "Arbiter.Core.CronSchedule" "arbiter-core-0.1.0.0-inplace" 'False) (C1 ('MetaCons "CronScheduleUpdate" 'PrefixI 'True) ((S1 ('MetaSel ('Just "overrideExpression") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (Maybe Text))) :*: S1 ('MetaSel ('Just "overrideOverlap") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (Maybe Text)))) :*: (S1 ('MetaSel ('Just "overrideTimezone") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (Maybe Text))) :*: S1 ('MetaSel ('Just "enabled") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Bool)))))

Effective values

effectiveExpression :: CronScheduleRow -> Text Source #

Effective expression: override if set, else default.

effectiveOverlap :: CronScheduleRow -> Text Source #

Effective overlap policy: override if set, else default.

effectiveTimezone :: CronScheduleRow -> Maybe Text Source #

Effective timezone: override if set, else default. Nothing means UTC.

DDL

cronSchedulesTable :: Text -> Text Source #

Qualified table name for the cron_schedules table.

createCronSchedulesTableSQL :: Text -> Text Source #

DDL for the cron_schedules table.

addTimezoneColumnSQL :: Text -> Text Source #

Idempotent migration adding the timezone columns to an existing table.