From 6455f0e75605a4ba4754a6c3e3ba157dd0c51a77 Mon Sep 17 00:00:00 2001 From: Ilya Portnov Date: Sun, 11 Apr 2010 00:26:25 +0600 Subject: [PATCH] Fixes to compile with latest ghc and libraries. --- Blog/blog.conf | 2 +- Framework/Storage.hs | 22 +- TODO | 10 +- graph.dot | 524 +++++++++++++++++++++++++++++++++++++++++++------- 4 files changed, 474 insertions(+), 84 deletions(-) diff --git a/Blog/blog.conf b/Blog/blog.conf index 365921c..860be9d 100644 --- a/Blog/blog.conf +++ b/Blog/blog.conf @@ -5,7 +5,7 @@ port = 8080 staticdir = static/ [database] -path = host=localhost password=31415 +path = host=rtfm-server password=31415 [cache] backend = filesystem diff --git a/Framework/Storage.hs b/Framework/Storage.hs index 234f61a..56981ec 100644 --- a/Framework/Storage.hs +++ b/Framework/Storage.hs @@ -12,7 +12,7 @@ module Framework.Storage import Data.String.Utils import qualified Database.HDBC.Sqlite3 as Sqlite3 -import qualified Database.HDBC.MySQL as MySQL +-- import qualified Database.HDBC.MySQL as MySQL import qualified Database.HDBC.PostgreSQL as PostgreSQL import qualified Database.HDBC as D @@ -26,16 +26,16 @@ connect' :: String -- ^ DB backend -> IO DBConnection connect' "sqlite3" file = DBC `fmap` (Sqlite3.connectSqlite3 file) connect' "psql" str = DBC `fmap` (PostgreSQL.connectPostgreSQL str) -connect' "mysql" str = DBC `fmap` (MySQL.connectMySQL $ parsedMySQL) - where - parsedMySQL = MySQL.defaultMySQLConnectInfo { - MySQL.mysqlUser = user, - MySQL.mysqlPassword = pass, - MySQL.mysqlHost = server, - MySQL.mysqlDatabase = db} - [user,x] = split ":" str - [pass,x'] = split "@" x - [server,db] = split "/" x' +-- connect' "mysql" str = DBC `fmap` (MySQL.connectMySQL $ parsedMySQL) +-- where +-- parsedMySQL = MySQL.defaultMySQLConnectInfo { +-- MySQL.mysqlUser = user, +-- MySQL.mysqlPassword = pass, +-- MySQL.mysqlHost = server, +-- MySQL.mysqlDatabase = db} +-- [user,x] = split ":" str +-- [pass,x'] = split "@" x +-- [server,db] = split "/" x' connect' _ _ = error "Unknown DB driver!" -- | Connect to DB, get parameters from "StaticConfig" diff --git a/TODO b/TODO index e665bf7..9da3b80 100644 --- a/TODO +++ b/TODO @@ -1,4 +1,4 @@ -INPROGRESS [forms] Удобные средства расширения форм (в т.ч. и для использования в Form processors); +INPROGRESS [forms] Удобные средства расширения форм в т.ч. и для использования в Form processors; * [forms] Больше виджетов для форм; * [forms] Средства создания "мастеров"; ? Более удобный paginator; @@ -6,7 +6,7 @@ INPROGRESS [CRUD] Автоматические CRUD-контроллеры; * Человеческая обработка завершения программы; * [config] Все параметры, которые сейчас hard-coded, брать из конфига; INPROGRESS [i18n] Полу-автоматическая интернационализация с помощью какого-л. Middleware; -INPROGRESS [cache] Более высокоуровневый интерфейс для кэша - чтоб было легко закэшировать результат всей функции; +INPROGRESS [cache] Более высокоуровневый интерфейс для кэша чтобы было легко закэшировать результат всей функции; INPROGRESS [cache] Соответственно, простые средства для инвалидации кэша; INPROGRESS [SQL ORM] Более продвинутые и высокоуровневые функции генерации SQL; ? [SQL] Слой абстракции от диалекта SQL; @@ -14,11 +14,11 @@ INPROGRESS [SQL ORM] Более продвинутые и высокоуровн ! [DOC] Документация ко всей этой красоте. * [TEST PUT] Протестировать поддержку PUT web-сервером; -DONE Генерация структуры Form по Model (с возможностью переопределить, или просто не использовать); +DONE Генерация структуры Form по Model с возможностью переопределить, или просто не использовать; DONE Бэкенд для MySQL; DONE Чтение конфига из файла либо удобный EDSL для конфига; DONE Перенести текущий правленный Network.Shed.Httpd в дерево проекта (написать свой?); DONE Лучше интегрировать Httpd в движок, в частности - чтоб средствами движка писал логи итп; -DONE Лучше формализовать формат запроса (reqMethod=="GET" -> reqMethod==GET итп), вероятно, следует привести в соответствие с Network.HTTP; +DONE Лучше формализовать формат запроса reqMethod=="GET" -> reqMethod==GET итп, вероятно, следует привести в соответствие с Network.HTTP; DONE При отдаче статики не коннектиться к БД и прочему; -DONE Отдельная структура (и модуль?) для конфига (StaticConfig в нынешнем виде должна стать промежуточной структурой, заполняемой из конфига); +DONE Отдельная структура (и модуль?) для конфига StaticConfig в нынешнем виде должна стать промежуточной структурой, заполняемой из конфига; diff --git a/graph.dot b/graph.dot index 1576083..15e88b1 100644 --- a/graph.dot +++ b/graph.dot @@ -1,81 +1,471 @@ digraph G { -u49[label="TemplateParser"]; -u48[label="Settings"]; -u45[label="Models"]; -u0[label="Main",color=green]; - +u76[label="TemplateParser"]; +u75[label="TemplateGen"]; +u73[label="Templates"]; +u71[label="Models"]; +u70[label="Invalidation"]; +u0[label="Main"]; subgraph cluster_0 { +label="Extensions"; +color="#ccffcc"; +style="filled"; +u69[label="Signals"]; +u68[label="Middlewares"]; +u66[label="Handlers"]; +u63[label="FormProcessors"]; +u59[label="Context"]; + +} +subgraph cluster_1 { label="Framework"; +color="#ccffcc"; +style="filled"; +u53[label="Pager"]; +u52[label="ContextProcessors"]; +u30[label="Wrapper"]; +u29[label="Urls"]; +u26[label="ORM"]; +u25[label="Storage"]; +u22[label="Cache"]; +u21[label="Config"]; +u18[label="SignalTypes"]; +u15[label="Signals"]; +u11[label="Utils"]; +u9[label="Logger"]; +u8[label="Exceptions"]; +u6[label="Controller"]; +u5[label="Pool"]; +u2[label="Types"]; +u1[label="API"]; +subgraph cluster_2 { +label="API"; +color="#99ff99"; +style="filled"; +u50[label="Logger"]; +u47[label="UserMessage"]; +u46[label="CRUD"]; +u39[label="SQLUtils"]; +u38[label="SQL"]; +u37[label="Storage"]; +u36[label="Sessions"]; +u35[label="Cache"]; -api[label="API",shape=box]; -forms[label=Forms,shape=box]; -tengine[label=TEngine,shape=box]; -u47[label="Markdown"]; -u44[label="Pager"]; -u43[label="ContextProcessors"]; +} +subgraph cluster_3 { +label="Cache"; +color="#99ff99"; +style="filled"; +u24[label="Instances"]; +u23[label="Cache"]; +u4[label="Types"]; -subgraph cluster_1 { -color=gray; -label=DB; -orm[label="ORM",shape=box]; -u19[label="Storage"]; } +subgraph cluster_4 { +label="Forms"; +color="#99ff99"; +style="filled"; +u49[label="Validators"]; +u48[label="ModelForm"]; +u43[label="Validation"]; +u42[label="HTML"]; +u41[label="Rendering"]; +u40[label="Types"]; +u17[label="HTMLTypes"]; -cache[label="Cache",shape=box]; -u15[label="Config"]; -u12[label="GetText"]; +} +subgraph cluster_5 { +label="GetText"; +color="#99ff99"; +style="filled"; +u64[label="HTML"]; +u33[label="Init"]; +u14[label="IO"]; +u13[label="Controller"]; + +} +subgraph cluster_6 { +label="Http"; +color="#99ff99"; +style="filled"; +u45[label="PostParser"]; +u44[label="Vars"]; +u34[label="Static"]; +u32[label="Middlewares"]; +u31[label="Sessions"]; +u20[label="HTTPServer"]; +u19[label="Cookies"]; +u12[label="Httpd"]; +u10[label="Response"]; +u3[label="SessionTypes"]; + +} +subgraph cluster_7 { +label="Modules"; +color="#99ff99"; +style="filled"; +u55[label="SHA1"]; +subgraph cluster_8 { +label="Auth"; +color="#66ff66"; +style="filled"; +u67[label="Handlers"]; +u61[label="ShowForm"]; +u60[label="Context"]; +u57[label="Utils"]; +u56[label="Models"]; +u54[label="Controllers"]; + +} +subgraph cluster_9 { +label="Formatters"; +color="#66ff66"; +style="filled"; +u72[label="Markdown"]; + +} +subgraph cluster_10 { +label="Registration"; +color="#66ff66"; +style="filled"; +u62[label="Context"]; +u58[label="Forms"]; + +} +subgraph cluster_11 { +label="TextCaptcha"; +color="#66ff66"; +style="filled"; +u65[label="FormProcessors"]; + +} + +} +subgraph cluster_12 { +label="ORM"; +color="#99ff99"; +style="filled"; +u28[label="SQL"]; +u27[label="Models"]; +u16[label="Types"]; + +} +subgraph cluster_13 { +label="TEngine"; +color="#99ff99"; +style="filled"; +u74[label="TemplateFuncs"]; +u51[label="TemplateUtil"]; +u7[label="Types"]; -subgraph cluster_3 { -color=gray; -label=Network; -http[label=HTTP,shape=box,color=red]; -u25[label="Wrapper"]; -u24[label="Urls"]; } } -api -> cache; -api -> forms; -api -> http; -api -> orm; -api -> tengine; -api -> u12; -api -> u19; -api -> u24; -api -> u44; -forms -> api; -forms -> http; -forms -> orm; -forms -> u48; -http -> cache; -http -> u12; -http -> u15; -http -> u19; -http -> u24; -http -> u48; -tengine -> api; -tengine -> cache; -tengine -> http; -tengine -> u43; -tengine -> u45; -u0 -> api; -u0 -> u45; -u19 -> orm; -u24 -> http; -u24 -> u25; -u25 -> cache; -u25 -> http; -u25 -> u19; -u43 -> api; -u44 -> api; -u44 -> forms; -u44 -> http; -u44 -> orm; -u45 -> forms; -u45 -> orm; -u45 -> u47; -u48 -> forms; -u48 -> tengine; +u75 -> u11; +u75 -> u76; +u74 -> u7; +u73 -> u11; +u73 -> u7; +u73 -> u74; +u73 -> u71; +u71 -> u7; +u71 -> u40; +u71 -> u42; +u71 -> u49; +u71 -> u48; +u71 -> u26; +u71 -> u72; +u70 -> u18; +u70 -> u26; +u70 -> u35; +u70 -> u38; +u70 -> u71; +u69 -> u18; +u69 -> u70; +u67 -> u6; +u67 -> u11; +u67 -> u47; +u67 -> u36; +u67 -> u10; +u66 -> u2; +u66 -> u6; +u66 -> u7; +u66 -> u51; +u66 -> u67; +u65 -> u6; +u65 -> u44; +u65 -> u40; +u65 -> u42; +u65 -> u48; +u64 -> u6; +u64 -> u40; +u64 -> u13; +u63 -> u40; +u63 -> u64; +u63 -> u65; +u62 -> u2; +u62 -> u7; +u62 -> u6; +u62 -> u11; +u62 -> u58; +u61 -> u6; +u61 -> u40; +u61 -> u41; +u61 -> u56; +u60 -> u2; +u60 -> u7; +u60 -> u6; +u60 -> u11; +u60 -> u61; +u59 -> u6; +u59 -> u60; +u59 -> u62; +u58 -> u2; +u58 -> u6; +u58 -> u26; +u58 -> u15; +u58 -> u40; +u58 -> u49; +u58 -> u43; +u58 -> u41; +u58 -> u42; +u58 -> u44; +u58 -> u10; +u58 -> u38; +u58 -> u37; +u58 -> u36; +u58 -> u56; +u58 -> u55; +u57 -> u1; +u56 -> u7; +u56 -> u40; +u56 -> u42; +u56 -> u49; +u56 -> u26; +u54 -> u40; +u54 -> u43; +u54 -> u1; +u54 -> u11; +u54 -> u55; +u54 -> u56; +u53 -> u40; +u53 -> u42; +u53 -> u16; +u53 -> u28; +u53 -> u38; +u53 -> u2; +u53 -> u11; +u53 -> u6; +u53 -> u44; +u52 -> u2; +u52 -> u7; +u52 -> u11; +u52 -> u6; +u52 -> u36; +u52 -> u44; +u52 -> u59; +u51 -> u10; +u51 -> u2; +u51 -> u7; +u51 -> u6; +u51 -> u36; +u51 -> u35; +u51 -> u22; +u51 -> u52; +u51 -> u73; +u50 -> u2; +u50 -> u6; +u50 -> u9; +u49 -> u40; +u48 -> u40; +u48 -> u49; +u48 -> u42; +u48 -> u26; +u47 -> u6; +u47 -> u36; +u46 -> u2; +u46 -> u11; +u46 -> u6; +u46 -> u44; +u46 -> u10; +u46 -> u16; +u46 -> u39; +u46 -> u47; +u46 -> u40; +u46 -> u41; +u46 -> u48; +u46 -> u13; +u45 -> u2; +u45 -> u11; +u44 -> u2; +u44 -> u11; +u44 -> u12; +u44 -> u45; +u43 -> u2; +u43 -> u26; +u43 -> u44; +u43 -> u40; +u43 -> u42; +u42 -> u40; +u42 -> u11; +u42 -> u2; +u41 -> u2; +u41 -> u11; +u41 -> u6; +u41 -> u40; +u41 -> u42; +u41 -> u43; +u41 -> u26; +u41 -> u36; +u41 -> u10; +u41 -> u63; +u40 -> u2; +u40 -> u16; +u40 -> u6; +u40 -> u17; +u39 -> u2; +u39 -> u6; +u39 -> u8; +u39 -> u15; +u39 -> u40; +u39 -> u41; +u39 -> u43; +u39 -> u26; +u39 -> u38; +u39 -> u37; +u38 -> u2; +u38 -> u6; +u38 -> u25; +u38 -> u16; +u38 -> u28; +u38 -> u27; +u37 -> u2; +u37 -> u6; +u37 -> u16; +u37 -> u25; +u36 -> u2; +u36 -> u6; +u36 -> u31; +u35 -> u2; +u35 -> u6; +u35 -> u22; +u35 -> u10; +u34 -> u2; +u34 -> u11; +u34 -> u10; +u32 -> u2; +u32 -> u11; +u32 -> u33; +u32 -> u21; +u32 -> u68; +u31 -> u2; +u31 -> u11; +u31 -> u19; +u31 -> u3; +u30 -> u31; +u30 -> u25; +u30 -> u10; +u30 -> u22; +u30 -> u2; +u30 -> u11; +u29 -> u11; +u29 -> u2; +u29 -> u30; +u29 -> u6; +u29 -> u8; +u29 -> u31; +u29 -> u10; +u28 -> u16; +u28 -> u27; +u27 -> u7; +u27 -> u16; +u26 -> u16; +u26 -> u27; +u26 -> u28; +u25 -> u2; +u25 -> u26; +u25 -> u5; +u24 -> u11; +u24 -> u4; +u23 -> u5; +u23 -> u4; +u23 -> u24; +u22 -> u4; +u22 -> u23; +u21 -> u2; +u20 -> u21; +u20 -> u4; +u20 -> u22; +u20 -> u25; +u20 -> u5; +u20 -> u9; +u20 -> u2; +u20 -> u8; +u20 -> u29; +u20 -> u11; +u20 -> u10; +u20 -> u32; +u20 -> u12; +u20 -> u34; +u19 -> u2; +u19 -> u11; +u18 -> u6; +u18 -> u16; +u17 -> u2; +u16 -> u2; +u16 -> u17; +u15 -> u6; +u15 -> u16; +u15 -> u18; +u15 -> u69; +u13 -> u6; +u13 -> u14; +u12 -> u2; +u12 -> u9; +u11 -> u12; +u11 -> u2; +u10 -> u2; +u10 -> u11; +u10 -> u12; +u9 -> u2; +u8 -> u2; +u8 -> u6; +u8 -> u9; +u8 -> u10; +u8 -> u66; +u6 -> u2; +u6 -> u7; +u2 -> u3; +u2 -> u4; +u2 -> u5; +u1 -> u2; +u1 -> u6; +u1 -> u8; +u1 -> u13; +u1 -> u15; +u1 -> u19; +u1 -> u20; +u1 -> u35; +u1 -> u36; +u1 -> u37; +u1 -> u38; +u1 -> u39; +u1 -> u46; +u1 -> u50; +u1 -> u47; +u1 -> u7; +u1 -> u51; +u1 -> u41; +u1 -> u53; +u1 -> u44; +u1 -> u29; +u1 -> u26; +u1 -> u10; +u0 -> u1; +u0 -> u11; +u0 -> u54; +u0 -> u57; +u0 -> u58; +u0 -> u71; } -- 1.7.2.3