{-# LANGUAGE NoImplicitPrelude #-} module Bamboo.Model.Counter where -- env import Bamboo.Helper.Env import qualified Bamboo.Config.Global as G import qualified System.IO as IO hit x = create_stat_if_none x >> x.inc_stat count_name = (/ G.count_meta) count_path = (G.stat_uri / ) > count_name default_count = 1 create_stat x = mkdir_p (x.take_directory) >> default_count.show.write_file x create_stat_if_none x = do let i = x.count_path has_stat <- i.file_exist if has_stat then return () else i.create_stat safe_read_line x = with_file x IO.ReadMode IO.hGetLine inc_stat x = do let i = x.count_path c <- i.safe_read_line c.read.(+1).show.write_file i read_stat x = do create_stat_if_none x safe_read_line (x.count_path) ^ read