refactor(qualification): update db migration code

This commit is contained in:
Steffen Jost 2023-06-30 07:55:13 +00:00
parent 46f3a3324c
commit a1dd70b143
3 changed files with 14 additions and 10 deletions

View File

@ -60,11 +60,10 @@ QualificationUser
validUntil Day -- addGregorianMonthsRollOver (toInteger renewalMonths) qualificationUserValidUntil validUntil Day -- addGregorianMonthsRollOver (toInteger renewalMonths) qualificationUserValidUntil
lastRefresh Day -- lastRefresh > validUntil possible, if Qualification^elearningOnly == False lastRefresh Day -- lastRefresh > validUntil possible, if Qualification^elearningOnly == False
firstHeld Day -- first time the qualification was earned, should never change firstHeld Day -- first time the qualification was earned, should never change
-- blockedDue QualificationBlocked Maybe -- TODO: refactor own table isJust means that the qualification is currently revoked
scheduleRenewal Bool default=true -- if false, no automatic renewal is scheduled and the qualification expires scheduleRenewal Bool default=true -- if false, no automatic renewal is scheduled and the qualification expires
lastNotified UTCTime default=now() -- last notficiation about being invalid lastNotified UTCTime default=now() -- last notficiation about being invalid
-- temporärer Entzug vorsehen -- SAP Schnittstelle muss dann angepasst werden -- Reasons and temporary revocations are implemented through QualificationUserBlock
-- Begründungsfeld vorsehen -- TODO: adjust SAP interface to transmit end dates
UniqueQualificationUser qualification user UniqueQualificationUser qualification user
deriving Generic deriving Generic
@ -72,9 +71,7 @@ QualificationUserBlock
qualificationUser QualificationUserId OnDeleteCascade OnUpdateCascade qualificationUser QualificationUserId OnDeleteCascade OnUpdateCascade
unblock Bool unblock Bool
from UTCTime from UTCTime
-- until Day Maybe -- if Nothing then the block holds indefinitely
reason Text reason Text
-- company -- to be encoded in reason
blocker UserId Maybe blocker UserId Maybe
deriving Eq Ord Read Show Generic deriving Eq Ord Read Show Generic

View File

@ -13,7 +13,7 @@ module Model.Migration
import Import.NoModel hiding (Max(..), Last(..)) import Import.NoModel hiding (Max(..), Last(..))
import Model import Model
import Foundation.Type import Foundation.Type
import Model.Migration.Definitions import Model.Migration.Definitions -- SEE HERE: this module contains the actual migration code
import qualified Model.Migration.Types as Legacy import qualified Model.Migration.Types as Legacy
import qualified Data.Map as Map import qualified Data.Map as Map

View File

@ -858,8 +858,15 @@ customMigrations = mapF $ \case
Migration20230524QualificationUserBlock -> Migration20230524QualificationUserBlock ->
unlessM (tableExists "qualification_user_block") $ do unlessM (tableExists "qualification_user_block") $ do
[executeQQ| [executeQQ|
CREATE TABLE "qualification_user_block" ("id" SERIAL8 PRIMARY KEY UNIQUE, "qualification_user" bigint NOT NULL, "from" date NOT NULL, "until" date, "reason" character varying NOT NULL) CREATE TABLE "qualification_user_block"
CONSTRAINT qualification_user_fkey FOREIGN KEY (qualification_user) REFERENCES qualification_user(id) ( "id" SERIAL8 PRIMARY KEY UNIQUE
, "qualification_user" bigint NOT NULL
, "from" timestamp with time zone NOT NULL
, "reason" character varying NOT NULL
, "blocker" bigint
, CONSTRAINT qualification_user_block_qualification_user_fkey FOREIGN KEY (qualification_user) REFERENCES qualification_user(id) ON DELETE CASCADE
, CONSTRAINT qualification_user_block_blocker_fkey FOREIGN KEY (blocker) REFERENCES user(id)
)
|] |]
let getBlocks = [queryQQ|SELECT "id", "blocked_due" FROM "qualification_user" WHERE "blocked_due" IS NOT NULL|] let getBlocks = [queryQQ|SELECT "id", "blocked_due" FROM "qualification_user" WHERE "blocked_due" IS NOT NULL|]