diff --git a/Upgrade.md b/Upgrade.md index 6e5d67d..26358ce 100644 --- a/Upgrade.md +++ b/Upgrade.md @@ -15,4 +15,29 @@ ALTER TABLE SmartlockAuth ADD COLUMN `allowedUntilDate` DATETIME NOT NULL AFTER ALTER TABLE SmartlockAuth ADD COLUMN `allowedUntilTime` SMALLINT AFTER `allowedUntilDate`; ALTER TABLE SmartlockAuth ADD COLUMN `allowedWeekDays` SMALLINT NOT NULL AFTER `allowedUntilTime`; +DROP FUNCTION IF EXISTS DaysFromBitMask; +@delimiter ++; +CREATE FUNCTION DaysFromBitMask (val INT) +RETURNS VARCHAR(255) DETERMINISTIC +BEGIN + DECLARE DAY_RESULT VARCHAR(255); + SET DAY_RESULT=""; + IF val = 0 THEN SET DAY_RESULT='Keine'; END IF; + IF val >= 64 THEN SET DAY_RESULT='Mo'; SET val=val-64; END IF; + IF val >= 32 THEN SET DAY_RESULT=CONCAT('Di',', ',DAY_RESULT); SET val=val-32; END IF; + IF val >= 16 THEN SET DAY_RESULT=CONCAT('Mi',', ',DAY_RESULT); SET val=val-16; END IF; + IF val >= 8 THEN SET DAY_RESULT=CONCAT('Do',', ',DAY_RESULT); SET val=val-8; END IF; + IF val >= 4 THEN SET DAY_RESULT=CONCAT('Fr',', ',DAY_RESULT); SET val=val-4; END IF; + IF val >= 2 THEN SET DAY_RESULT=CONCAT('Sa',', ',DAY_RESULT); SET val=val-2; END IF; + IF val >= 1 THEN SET DAY_RESULT=CONCAT('So',', ',DAY_RESULT); SET val=val-1; END IF; + /*Wenn val nicht mit "Keine" oder mit "Mo" endet, dann das Komma+Leerzeichen abschneiden*/ + SET DAY_RESULT = CASE WHEN DAY_RESULT LIKE '%, ' THEN LEFT(DAY_RESULT,length(DAY_RESULT)-2) ELSE DAY_RESULT END; + RETURN DAY_RESULT; +END +++ +@delimiter ;++ +GRANT EXECUTE ON FUNCTION DaysFromBitMask TO nuki; +/*Test the function with some int values*/ +SELECT DaysFromBitMask(54); + ``` \ No newline at end of file