Skip to content
This repository was archived by the owner on Feb 6, 2024. It is now read-only.

Commit bd9f958

Browse files
Merge remote-tracking branch 'origin/master'
2 parents ffe5843 + ae12274 commit bd9f958

File tree

6 files changed

+92
-10
lines changed

6 files changed

+92
-10
lines changed

infra/handler/app/Test.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -538,7 +538,7 @@ testServer = withServer $ \port -> do
538538

539539
runClientM (decksGetDeckId' b deckId) clientEnv >>= \case
540540
Left e -> error $ "Expected decks, got error: " <> show e
541-
Right deck ->
541+
Right (Item _deckId deck) ->
542542
if deck == newDeck then pure () else (error $ "Expected get deck, got: " <> show deck)
543543

544544
let updatedSlide = Slide Nothing "quux" HMS.empty
@@ -579,7 +579,7 @@ _usersPut' :: T.Text -> UserId -> UserInfo -> ClientM (Item UserId User)
579579
_usersDelete' :: T.Text -> UserId -> ClientM ()
580580

581581
decksGet' :: T.Text -> Maybe UserId -> ClientM [Item DeckId Deck]
582-
decksGetDeckId' :: T.Text -> DeckId -> ClientM Deck
582+
decksGetDeckId' :: T.Text -> DeckId -> ClientM (Item DeckId Deck)
583583
decksPostPublish' :: T.Text -> DeckId -> ClientM PresResponse
584584
decksPost' :: T.Text -> Deck -> ClientM (Item DeckId Deck)
585585
decksPut' :: T.Text -> DeckId -> Deck -> ClientM (Item DeckId Deck)

infra/handler/package.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ dependencies:
1212
- amazonka-sqs
1313
- base
1414
- bytestring
15+
- cases
1516
- contravariant
1617
- conduit
1718
- conduit-extra

infra/handler/src/DeckGo/Handler.hs

Lines changed: 81 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ type DecksAPI =
222222
Protected :> QueryParam "owner_id" UserId :> Get '[JSON] [Item DeckId Deck] :<|>
223223
Protected :>
224224
Capture "deck_id" DeckId :>
225-
Get '[JSON] Deck :<|>
225+
Get '[JSON] (Item DeckId Deck) :<|>
226226
Protected :>
227227
Capture "deck_id" DeckId :>
228228
"publish" :>
@@ -810,7 +810,7 @@ decksGetDeckId
810810
:: HC.Connection
811811
-> Firebase.UserId
812812
-> DeckId
813-
-> Servant.Handler Deck
813+
-> Servant.Handler (Item DeckId Deck)
814814
decksGetDeckId conn fuid deckId = do
815815

816816
iface <- liftIO $ getDbInterface conn
@@ -827,7 +827,7 @@ decksGetDeckId conn fuid deckId = do
827827
[ "Deck was found", show deck, "but requester is not the owner", show fuid ]
828828
Servant.throwError Servant.err404
829829

830-
pure deck
830+
pure (Item deckId deck)
831831

832832
decksDeleteSession :: DeckId -> HS.Session ()
833833
decksDeleteSession did = do
@@ -1209,6 +1209,8 @@ data DbVersion
12091209
| DbVersion1
12101210
| DbVersion2
12111211
| DbVersion3
1212+
| DbVersion4
1213+
| DbVersion5
12121214
deriving stock (Enum, Bounded, Ord, Eq)
12131215

12141216
-- | Migrates from ver to latest
@@ -1309,6 +1311,80 @@ migrateFrom = \frm -> do
13091311
, ");"
13101312
]
13111313
) HE.unit HD.unit True
1314+
DbVersion4 -> do
1315+
HS.sql "DROP TABLE IF EXISTS username"
1316+
HS.sql "DROP TABLE IF EXISTS account CASCADE"
1317+
HS.sql "DROP TABLE IF EXISTS slide"
1318+
HS.sql "DROP TABLE IF EXISTS deck"
1319+
HS.statement () $ Statement
1320+
(BS8.unwords
1321+
[ "CREATE TABLE account ("
1322+
, "id TEXT PRIMARY KEY,"
1323+
, "firebase_id TEXT UNIQUE,"
1324+
, "username TEXT UNIQUE NULL"
1325+
, ");"
1326+
]
1327+
) HE.unit HD.unit True
1328+
HS.statement () $ Statement
1329+
(BS8.unwords
1330+
[ "CREATE TABLE deck ("
1331+
, "id TEXT PRIMARY KEY,"
1332+
, "name TEXT NOT NULL,"
1333+
, "background TEXT NULL,"
1334+
, "owner TEXT NOT NULL REFERENCES account (id),"
1335+
, "attributes JSON"
1336+
, ");"
1337+
]
1338+
) HE.unit HD.unit True
1339+
HS.statement () $ Statement
1340+
(BS8.unwords
1341+
[ "CREATE TABLE slide ("
1342+
, "id TEXT PRIMARY KEY,"
1343+
, "deck TEXT NOT NULL REFERENCES deck (id) ON DELETE CASCADE,"
1344+
, "index INT2 NULL,"
1345+
, "content TEXT," -- TODO: is any of this nullable?
1346+
, "template TEXT,"
1347+
, "attributes JSON"
1348+
, ");"
1349+
]
1350+
) HE.unit HD.unit True
1351+
DbVersion5 -> do
1352+
HS.sql "DROP TABLE IF EXISTS username"
1353+
HS.sql "DROP TABLE IF EXISTS account CASCADE"
1354+
HS.sql "DROP TABLE IF EXISTS slide"
1355+
HS.sql "DROP TABLE IF EXISTS deck"
1356+
HS.statement () $ Statement
1357+
(BS8.unwords
1358+
[ "CREATE TABLE account ("
1359+
, "id TEXT PRIMARY KEY,"
1360+
, "firebase_id TEXT UNIQUE,"
1361+
, "username TEXT UNIQUE NULL"
1362+
, ");"
1363+
]
1364+
) HE.unit HD.unit True
1365+
HS.statement () $ Statement
1366+
(BS8.unwords
1367+
[ "CREATE TABLE deck ("
1368+
, "id TEXT PRIMARY KEY,"
1369+
, "name TEXT NOT NULL,"
1370+
, "background TEXT NULL,"
1371+
, "owner TEXT NOT NULL REFERENCES account (id) ON DELETE CASCADE,"
1372+
, "attributes JSON"
1373+
, ");"
1374+
]
1375+
) HE.unit HD.unit True
1376+
HS.statement () $ Statement
1377+
(BS8.unwords
1378+
[ "CREATE TABLE slide ("
1379+
, "id TEXT PRIMARY KEY,"
1380+
, "deck TEXT NOT NULL REFERENCES deck (id) ON DELETE CASCADE,"
1381+
, "index INT2 NULL,"
1382+
, "content TEXT," -- TODO: is any of this nullable?
1383+
, "template TEXT,"
1384+
, "attributes JSON"
1385+
, ");"
1386+
]
1387+
) HE.unit HD.unit True
13121388

13131389
readDbVersion :: HS.Session (Either String (Maybe DbVersion))
13141390
readDbVersion = do
@@ -1352,6 +1428,8 @@ dbVersionToText = \case
13521428
DbVersion1 -> "1"
13531429
DbVersion2 -> "2"
13541430
DbVersion3 -> "3"
1431+
DbVersion4 -> "4"
1432+
DbVersion5 -> "5"
13551433

13561434
dbVersionFromText :: T.Text -> Maybe DbVersion
13571435
dbVersionFromText t =

infra/handler/src/DeckGo/Presenter.hs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ module DeckGo.Presenter where
1010

1111
import Control.Lens hiding ((.=))
1212
import Control.Monad
13+
import qualified Cases
1314
import qualified Network.AWS.SQS as SQS
1415
import qualified Data.Aeson as Aeson
1516
import Data.Bifunctor
@@ -101,6 +102,8 @@ withPresentationFiles uname deck slides act = do
101102
interpol =
102103
T.replace "{{DECKDECKGO_TITLE}}" (unDeckname dname) .
103104
T.replace "{{DECKDECKGO_AUTHOR}}" (unUsername uname) .
105+
T.replace "{{DECKDECKGO_USERNAME}}" (unUsername uname) .
106+
T.replace "{{DECKDECKGO_DECKNAME}}" (sanitizeDeckname dname) .
104107
-- TODO: description
105108
T.replace "{{DECKDECKGO_DESCRIPTION}}" "(no description given)" .
106109
T.replace "{{DECKDECKGO_BASE_HREF}}"
@@ -132,7 +135,7 @@ slideTags :: Slide -> [Tag]
132135
slideTags slide =
133136
[ TagSoup.TagOpen
134137
("deckgo-slide-" <> slideTemplate slide)
135-
(HMS.toList (slideAttributes slide))
138+
(first Cases.spinalize <$> HMS.toList (slideAttributes slide))
136139
] <> maybe [] TagSoup.parseTags (slideContent slide) <>
137140
[ TagSoup.TagClose
138141
("deckgo-slide-" <> slideTemplate slide)

infra/lambda.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ resource "aws_lambda_function" "api" {
1919
PGDATABASE = aws_db_instance.default.name
2020
PGPASSWORD = aws_db_instance.default.password
2121
QUEUE_NAME = aws_sqs_queue.presentation_deploy.name
22-
FIREBASE_PROJECT_ID = "deckdeckgo-studio-beta"
22+
FIREBASE_PROJECT_ID = "deckdeckgo-studio-prod"
2323
DECKGO_PRESENTATIONS_URL = aws_route53_record.www_site_beta.fqdn
2424
META_BUCKET_NAME = aws_s3_bucket.meta.bucket
2525
}

infra/nix/sources.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
"homepage": "https://deckdeckgo.com",
66
"owner": "deckgo",
77
"repo": "deckdeckgo-starter",
8-
"rev": "b52b2f0dcb4213492f37afe1d962ba6d13fd3f97",
9-
"sha256": "186dvy7nswsyixh79fcbzir1v30cspl24wkj9m4xa5g9hwypkncz",
8+
"rev": "6b52258cfe6a7813ffc2a28041b4692a5056a01e",
9+
"sha256": "1afjaqmh7pis7561q4vay4yla51li2qi82f0j82yrp91vlj1c54h",
1010
"type": "tarball",
11-
"url": "https://github.com/deckgo/deckdeckgo-starter/archive/b52b2f0dcb4213492f37afe1d962ba6d13fd3f97.tar.gz",
11+
"url": "https://github.com/deckgo/deckdeckgo-starter/archive/6b52258cfe6a7813ffc2a28041b4692a5056a01e.tar.gz",
1212
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
1313
},
1414
"elasticmq": {

0 commit comments

Comments
 (0)