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,21 +60,18 @@ 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
QualificationUserBlock 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|]