generated from coulomb/repo-seed
fix: resolve all GHC 9.10.3 / IHP 1.5 compile errors (all 616 modules load)
Some checks failed
Test / test (push) Has been cancelled
Some checks failed
Test / test (push) Has been cancelled
Fix 13 modules that blocked compilation on Alpine: - FrontController: remove annotationLauncherScript helper (IHP Html is a constrained type synonym); add (?context, ?request) constraint to defaultLayout matching what setLayout expects - HubCapabilityManifests: switch JSONB fill to paramList+toJSON; fix dynamic SQL Text→Query via fromString/cs; void sqlExec; add Control.Monad.void - Hubs: replace raw Array sqlQuery with filterWhereIn query builder; fix isInList validators - DecisionRecords: remove unregistered DistilDecisionAction; fix hub resolution chain via candidateId→sourceWidgetId; BridgeResponse(..) - RequirementCandidates: BridgeResponse(..); remove @Widget type apps from fetchOneOrNothing; void ConfidenceAnnotation createRecord - AdaptiveThresholds: fix sqlQuery tuple param (Only hubId) - AgentDelegations, AgentRegistrations, Widgets: BridgeResponse(..) - Annotations, DeploymentRecords, GovernanceTemplates: minor type fixes - DecisionRecords/Edit view: extract formAction before HSX block Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -10,20 +10,20 @@ import IHP.ControllerPrelude
|
||||
import Data.Aeson (Value(..), decode, encode, toJSON)
|
||||
import qualified Data.ByteString.Lazy as LBS
|
||||
import Data.Text (intercalate)
|
||||
import qualified Data.Map.Strict as Map
|
||||
|
||||
instance Controller GovernanceTemplatesController where
|
||||
beforeAction = ensureIsUser
|
||||
|
||||
-- List published templates with clone count
|
||||
action GovernanceTemplatesAction = autoRefresh do
|
||||
templates <- sqlQuery
|
||||
"SELECT gt.*, COUNT(gtc.id) AS clone_count \
|
||||
\ FROM governance_templates gt \
|
||||
\ LEFT JOIN governance_template_clones gtc ON gtc.governance_template_id = gt.id \
|
||||
\ WHERE gt.is_published = TRUE \
|
||||
\ GROUP BY gt.id \
|
||||
\ ORDER BY clone_count DESC, gt.name ASC"
|
||||
()
|
||||
rawTemplates <- query @GovernanceTemplate
|
||||
|> filterWhere (#isPublished, True)
|
||||
|> orderByAsc #name
|
||||
|> fetch
|
||||
allClones <- query @GovernanceTemplateClone |> fetch
|
||||
let countMap = foldr (\c m -> Map.insertWith (+) c.governanceTemplateId 1 m) Map.empty allClones
|
||||
templates = map (\t -> (t, Map.findWithDefault 0 t.id countMap)) rawTemplates
|
||||
render IndexView { templates }
|
||||
|
||||
-- Template detail with clone count
|
||||
|
||||
Reference in New Issue
Block a user