4WBBSPHBORAQYMQYVKVO4SLPUD5R2TI2WWIMRYMARNTWP5CQU22AC W3S6D7LUBHQ633AHXRWYHK6Y7OFSYLHAJAYOQGYM7QSIADHVSMCAC ZHV75AEN7ZYS4LMQK3THSU7O25UIVURBR6XNKUFRN7NVPGHULWDAC ZEAH247RECTEYICYRFRX574BZWZYVGFWETVVKDCAPTKIGRYQT4IQC NJNMO72S7VIUV22JXB4IFPZMHWTJAOTP6EC6Z4QSKYIROSXT52MQC Z5KNL332YCRMHKU3NG7YWNLUCNHKSLXBZ3O22FSS47MNVXU2FDLAC 7TQPQW3NPNUK6CMTOT5ZE4MDENJ5SUOJ2VF2M4JGKHLZHXVX4F3QC NAFJ6RB3KYDBSTSNB3WQSVUQEPUGG2RZCBWRF4XNT2UKSOXDNMDQC U7YAT2ZK6GMS7KVFFEQTDRFX6GIN7HVHNWGKIFDGJGE2G2IXSF6QC QAC2QJ32ZLAK25KJ7SWT27WOZKD2MMDE7OZPHIRRFP2W2QZW7PBAC E2KOBKIJ2QMMC77UYNURGCTDGAIIRMBJNG7BMVLSFFPK5RAZ7KFAC GMYPBCWEB6NKURRILAHR3TJUKDOGR2ZMK5I6MS6P5G2LAGH36P3QC IR75ZMX32SFFMDNV2I2L22X5JTWCOC4UUBCSPU7S6VHR6HFV6ADQC X3ES7NUA42D2BF7CQDDKXM5CLMVCYA3H5YU5KXLPTGDBFPE2LNVAC NVOCQVASZWTKQJG7GPH7KHKZZR7NUG4WLV5YY4KAIRPCJRWCZPIAC DZ7G36NC3LJLRBZDFIYINFKNABIK2WIBINKLW7FCSKT5G4YSBYUQC XXJFUZOVELM3KIPRU6C2NHB3YQ3B3A3GGF2YYBTYJGPU3PR2OV4AC 7HPY3QPFPN35PSPUBVNW2GTFB3CBQZBST4J2BAVJ7QMXLIUN52JAC PBD7LZYQHXAA3KLH2ZUX5GW4UFML6BQ32KXZF4KZ6OYFASUYFJ5QC W3PIWHDK4DQHBD54FN4PIF3PELIT2V74L62AMMXM2M5BHYAACALAC CI4OPKQMU4CIX3QPGA5GWSEOPJ2FAREDBVU6X33E7X3EEQXAICRQC following commands to initialize the database. The postgres user's password isspecified in the docker-compose file.
`deploy/dbinit.sh` script to initialize the database. The postgres user's passwordcan be specified in the docker-compose file.
#!/bin/bashcreateuser -h localhost -U postgres -W -P aftokcreatedb -h localhost -U postgres -W -O aftok aftokpsql -h localhost -U postgres -W aftok \-c 'CREATE EXTENSION IF NOT EXISTS "uuid-ossp" WITH SCHEMA public;'if [ -n "$1" ]; thenpsql -h localhost -U aftok -W aftok < $1fi
_timeDevoted = Hours . (`div` 3600) . round . C.toSeconds' $ ws ^. wsLogged,
_loggedHours = Hours . (`div` 3600) . round . C.toSeconds' $ ws ^. wsLogged,_depreciatedHours = Hours . (`div` 3600) . round . C.toSeconds' $ ws ^. wsDepreciated,
it "correctly handles fully depreciated work intervals" $ donow <- C.getCurrentTimelet depf = toDepF $ DepreciationRules (LinearDepreciation 6 2) Nothingraw = [("b3ff64b7-6699-45f2-acee-38751325bf46", StartWork, "2021-02-09T15:52:13.434308+00"),("b3ff64b7-6699-45f2-acee-38751325bf46", StopWork, "2021-02-09T16:12:32.936579+00"),("d56ae5bd-8892-44c6-9a02-f6a8aca8636e", StartWork, "2021-02-09T16:23:10.637749+00"),("d56ae5bd-8892-44c6-9a02-f6a8aca8636e", StopWork, "2021-02-09T16:27:00.082747+00"),("d56ae5bd-8892-44c6-9a02-f6a8aca8636e", StartWork, "2021-02-09T16:29:10.119337+00"),("d56ae5bd-8892-44c6-9a02-f6a8aca8636e", StopWork, "2021-02-09T18:54:26.778107+00")]toEvent :: (String, C.UTCTime -> LogEvent, String) -> Maybe LogEntrytoEvent (uuid, f, t) =LogEntry <$> (CreditToUser . UserId <$> U.fromString uuid)<*> (f . C.toThyme <$> parseISO8601 t)<*> pure Nothingevents = catMaybes $ fmap toEvent rawwidx = workIndex (view event) eventsp = payouts depf now widxp `shouldBe` WorkShares 0 M.empty