mirror of
https://code.naskya.net/repos/ndqEd
synced 2025-03-20 15:14:54 +09:00
C2S & UI: Allow creation of a new Repo
This commit is contained in:
parent
8ec98e2a59
commit
e78f043f49
13 changed files with 424 additions and 180 deletions
src/Web
|
@ -1440,6 +1440,7 @@ data CreateObject u
|
|||
= CreateNote (Authority u) (Note u)
|
||||
| CreateTicket (Authority u) (Ticket u)
|
||||
| CreateTicketTracker ActorDetail (Maybe (Authority u, ActorLocal u))
|
||||
| CreateRepository ActorDetail VersionControlSystem (Maybe (Authority u, ActorLocal u))
|
||||
|
||||
parseCreateObject :: UriMode u => Object -> Parser (CreateObject u)
|
||||
parseCreateObject o
|
||||
|
@ -1450,12 +1451,22 @@ parseCreateObject o
|
|||
fail "type isn't TicketTracker"
|
||||
ml <- parseActorLocal o
|
||||
return $ CreateTicketTracker d ml
|
||||
<|> do d <- parseActorDetail o
|
||||
unless (actorType d == ActorTypeRepo) $
|
||||
fail "type isn't Repository"
|
||||
vcs <- o .: "versionControlSystem"
|
||||
ml <- parseActorLocal o
|
||||
return $ CreateRepository d vcs ml
|
||||
|
||||
encodeCreateObject :: UriMode u => CreateObject u -> Series
|
||||
encodeCreateObject (CreateNote h note) = toSeries h note
|
||||
encodeCreateObject (CreateTicket h ticket) = toSeries h ticket
|
||||
encodeCreateObject (CreateTicketTracker d ml) =
|
||||
encodeActorDetail d <> maybe mempty (uncurry encodeActorLocal) ml
|
||||
encodeCreateObject (CreateRepository d vcs ml)
|
||||
= encodeActorDetail d
|
||||
<> "versionControlSystem" .= vcs
|
||||
<> maybe mempty (uncurry encodeActorLocal) ml
|
||||
|
||||
data Create u = Create
|
||||
{ createObject :: CreateObject u
|
||||
|
@ -1473,6 +1484,7 @@ parseCreate o a luActor = do
|
|||
unless (a == h && luActor == ticketAttributedTo ticket) $
|
||||
fail "Create actor != note attrib"
|
||||
CreateTicketTracker _ _ -> return ()
|
||||
CreateRepository _ _ _ -> return ()
|
||||
Create obj <$> o .:? "target"
|
||||
|
||||
encodeCreate :: UriMode u => Create u -> Series
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue