mirror of
https://github.com/Start9Labs/registry.git
synced 2026-03-26 02:11:53 +00:00
rename AppIdentifier to PkgId to save typing and reflect new name terminology
This commit is contained in:
@@ -4,14 +4,14 @@
|
|||||||
-- /package/updates
|
-- /package/updates
|
||||||
/eos/latest EosR GET -- get eos information
|
/eos/latest EosR GET -- get eos information
|
||||||
/latest-version VersionLatestR GET -- get latest version of apps in query param id
|
/latest-version VersionLatestR GET -- get latest version of apps in query param id
|
||||||
/package/manifest/#AppIdentifier AppManifestR GET -- get app manifest from appmgr -- ?version={semver-spec}
|
/package/manifest/#PkgId AppManifestR GET -- get app manifest from appmgr -- ?version={semver-spec}
|
||||||
/package/release-notes ReleaseNotesR GET -- get release notes for package - expects query param of id=<pacakge-id>
|
/package/release-notes ReleaseNotesR GET -- get release notes for package - expects query param of id=<pacakge-id>
|
||||||
/package/icon/#AppIdentifier IconsR GET -- get icons - can specify version with ?spec=<emver>
|
/package/icon/#PkgId IconsR GET -- get icons - can specify version with ?spec=<emver>
|
||||||
/package/license/#AppIdentifier LicenseR GET -- get icons - can specify version with ?spec=<emver>
|
/package/license/#PkgId LicenseR GET -- get icons - can specify version with ?spec=<emver>
|
||||||
/package/instructions/#AppIdentifier InstructionsR GET -- get icons - can specify version with ?spec=<emver>
|
/package/instructions/#PkgId InstructionsR GET -- get icons - can specify version with ?spec=<emver>
|
||||||
|
|
||||||
-- TODO confirm needed
|
-- TODO confirm needed
|
||||||
/package/config/#AppIdentifier AppConfigR GET -- get app config from appmgr -- ?spec={semver-spec}
|
/package/config/#PkgId AppConfigR GET -- get app config from appmgr -- ?spec={semver-spec}
|
||||||
/package/version/#Text VersionAppR GET -- get most recent appId version
|
/package/version/#Text VersionAppR GET -- get most recent appId version
|
||||||
!/sys/#SYS_EXTENSIONLESS SysR GET -- get most recent sys app -- ?spec={semver-spec}
|
!/sys/#SYS_EXTENSIONLESS SysR GET -- get most recent sys app -- ?spec={semver-spec}
|
||||||
/version VersionR GET
|
/version VersionR GET
|
||||||
|
|||||||
@@ -4,20 +4,20 @@
|
|||||||
|
|
||||||
module Database.Queries where
|
module Database.Queries where
|
||||||
|
|
||||||
import Startlude
|
|
||||||
import Database.Persist.Sql
|
import Database.Persist.Sql
|
||||||
import Lib.Types.AppIndex
|
import Lib.Types.AppIndex
|
||||||
import Lib.Types.Emver
|
import Lib.Types.Emver
|
||||||
import Model
|
import Model
|
||||||
import Orphans.Emver ( )
|
import Orphans.Emver ( )
|
||||||
|
import Startlude
|
||||||
|
|
||||||
fetchApp :: MonadIO m => AppIdentifier -> ReaderT SqlBackend m (Maybe (Entity SApp))
|
fetchApp :: MonadIO m => PkgId -> ReaderT SqlBackend m (Maybe (Entity SApp))
|
||||||
fetchApp appId = selectFirst [SAppAppId ==. appId] []
|
fetchApp appId = selectFirst [SAppAppId ==. appId] []
|
||||||
|
|
||||||
fetchAppVersion :: MonadIO m => Version -> Key SApp -> ReaderT SqlBackend m (Maybe (Entity SVersion))
|
fetchAppVersion :: MonadIO m => Version -> Key SApp -> ReaderT SqlBackend m (Maybe (Entity SVersion))
|
||||||
fetchAppVersion appVersion appId = selectFirst [SVersionNumber ==. appVersion, SVersionAppId ==. appId] []
|
fetchAppVersion appVersion appId = selectFirst [SVersionNumber ==. appVersion, SVersionAppId ==. appId] []
|
||||||
|
|
||||||
createApp :: MonadIO m => AppIdentifier -> StoreApp -> ReaderT SqlBackend m (Maybe (Key SApp))
|
createApp :: MonadIO m => PkgId -> StoreApp -> ReaderT SqlBackend m (Maybe (Key SApp))
|
||||||
createApp appId StoreApp {..} = do
|
createApp appId StoreApp {..} = do
|
||||||
time <- liftIO getCurrentTime
|
time <- liftIO getCurrentTime
|
||||||
insertUnique $ SApp time Nothing storeAppTitle appId storeAppDescShort storeAppDescLong storeAppIconType
|
insertUnique $ SApp time Nothing storeAppTitle appId storeAppDescShort storeAppDescLong storeAppIconType
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ getSysR e = do
|
|||||||
-- @TODO update with new response type here
|
-- @TODO update with new response type here
|
||||||
getApp sysResourceDir e
|
getApp sysResourceDir e
|
||||||
|
|
||||||
getAppManifestR :: AppIdentifier -> Handler TypedContent
|
getAppManifestR :: PkgId -> Handler TypedContent
|
||||||
getAppManifestR appId = do
|
getAppManifestR appId = do
|
||||||
(appsDir, appMgrDir) <- getsYesod $ ((</> "apps") . resourcesDir &&& staticBinDir) . appSettings
|
(appsDir, appMgrDir) <- getsYesod $ ((</> "apps") . resourcesDir &&& staticBinDir) . appSettings
|
||||||
av <- getVersionFromQuery appsDir appExt >>= \case
|
av <- getVersionFromQuery appsDir appExt >>= \case
|
||||||
@@ -84,7 +84,7 @@ getAppManifestR appId = do
|
|||||||
(\bsSource -> respondSource "application/json" (bsSource .| awaitForever sendChunkBS))
|
(\bsSource -> respondSource "application/json" (bsSource .| awaitForever sendChunkBS))
|
||||||
where appExt = Extension (show appId) :: Extension "s9pk"
|
where appExt = Extension (show appId) :: Extension "s9pk"
|
||||||
|
|
||||||
getAppConfigR :: AppIdentifier -> Handler TypedContent
|
getAppConfigR :: PkgId -> Handler TypedContent
|
||||||
getAppConfigR appId = do
|
getAppConfigR appId = do
|
||||||
appSettings <- appSettings <$> getYesod
|
appSettings <- appSettings <$> getYesod
|
||||||
let appsDir = (</> "apps") . resourcesDir $ appSettings
|
let appsDir = (</> "apps") . resourcesDir $ appSettings
|
||||||
@@ -146,7 +146,7 @@ chunkIt fp = do
|
|||||||
recordMetrics :: String -> Version -> HandlerFor RegistryCtx ()
|
recordMetrics :: String -> Version -> HandlerFor RegistryCtx ()
|
||||||
recordMetrics appId appVersion = do
|
recordMetrics appId appVersion = do
|
||||||
let appId' = T.pack appId
|
let appId' = T.pack appId
|
||||||
sa <- runDB $ fetchApp $ AppIdentifier appId'
|
sa <- runDB $ fetchApp $ PkgId appId'
|
||||||
case sa of
|
case sa of
|
||||||
Nothing -> do
|
Nothing -> do
|
||||||
$logError $ appId' <> " not found in database"
|
$logError $ appId' <> " not found in database"
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ instance FromJSON IconType
|
|||||||
ixt :: Text
|
ixt :: Text
|
||||||
ixt = toS $ toUpper <$> drop 1 ".png"
|
ixt = toS $ toUpper <$> drop 1 ".png"
|
||||||
|
|
||||||
getIconsR :: AppIdentifier -> Handler TypedContent
|
getIconsR :: PkgId -> Handler TypedContent
|
||||||
getIconsR appId = do
|
getIconsR appId = do
|
||||||
(appsDir, appMgrDir) <- getsYesod $ ((</> "apps") . resourcesDir &&& staticBinDir) . appSettings
|
(appsDir, appMgrDir) <- getsYesod $ ((</> "apps") . resourcesDir &&& staticBinDir) . appSettings
|
||||||
spec <- getVersionFromQuery appsDir ext >>= \case
|
spec <- getVersionFromQuery appsDir ext >>= \case
|
||||||
@@ -71,7 +71,7 @@ getIconsR appId = do
|
|||||||
(\bsSource -> respondSource mimeType (bsSource .| awaitForever sendChunkBS))
|
(\bsSource -> respondSource mimeType (bsSource .| awaitForever sendChunkBS))
|
||||||
where ext = Extension (show appId) :: Extension "s9pk"
|
where ext = Extension (show appId) :: Extension "s9pk"
|
||||||
|
|
||||||
getLicenseR :: AppIdentifier -> Handler TypedContent
|
getLicenseR :: PkgId -> Handler TypedContent
|
||||||
getLicenseR appId = do
|
getLicenseR appId = do
|
||||||
(appsDir, appMgrDir) <- getsYesod $ ((</> "apps") . resourcesDir &&& staticBinDir) . appSettings
|
(appsDir, appMgrDir) <- getsYesod $ ((</> "apps") . resourcesDir &&& staticBinDir) . appSettings
|
||||||
spec <- getVersionFromQuery appsDir ext >>= \case
|
spec <- getVersionFromQuery appsDir ext >>= \case
|
||||||
@@ -84,7 +84,7 @@ getLicenseR appId = do
|
|||||||
sourceLicense appMgrDir p ext (\bsSource -> respondSource typePlain (bsSource .| awaitForever sendChunkBS))
|
sourceLicense appMgrDir p ext (\bsSource -> respondSource typePlain (bsSource .| awaitForever sendChunkBS))
|
||||||
where ext = Extension (show appId) :: Extension "s9pk"
|
where ext = Extension (show appId) :: Extension "s9pk"
|
||||||
|
|
||||||
getInstructionsR :: AppIdentifier -> Handler TypedContent
|
getInstructionsR :: PkgId -> Handler TypedContent
|
||||||
getInstructionsR appId = do
|
getInstructionsR appId = do
|
||||||
(appsDir, appMgrDir) <- getsYesod $ ((</> "apps") . resourcesDir &&& staticBinDir) . appSettings
|
(appsDir, appMgrDir) <- getsYesod $ ((</> "apps") . resourcesDir &&& staticBinDir) . appSettings
|
||||||
spec <- getVersionFromQuery appsDir ext >>= \case
|
spec <- getVersionFromQuery appsDir ext >>= \case
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ data ServiceRes = ServiceRes
|
|||||||
, serviceResInstructions :: URL
|
, serviceResInstructions :: URL
|
||||||
, serviceResLicense :: URL
|
, serviceResLicense :: URL
|
||||||
, serviceResVersions :: [Version]
|
, serviceResVersions :: [Version]
|
||||||
, serviceResDependencyInfo :: HM.HashMap AppIdentifier DependencyInfo
|
, serviceResDependencyInfo :: HM.HashMap PkgId DependencyInfo
|
||||||
}
|
}
|
||||||
deriving Generic
|
deriving Generic
|
||||||
|
|
||||||
@@ -93,7 +93,7 @@ instance ToContent ServiceRes where
|
|||||||
instance ToTypedContent ServiceRes where
|
instance ToTypedContent ServiceRes where
|
||||||
toTypedContent = toTypedContent . toJSON
|
toTypedContent = toTypedContent . toJSON
|
||||||
data DependencyInfo = DependencyInfo
|
data DependencyInfo = DependencyInfo
|
||||||
{ dependencyInfoTitle :: AppIdentifier
|
{ dependencyInfoTitle :: PkgId
|
||||||
, dependencyInfoIcon :: URL
|
, dependencyInfoIcon :: URL
|
||||||
}
|
}
|
||||||
deriving (Eq, Show)
|
deriving (Eq, Show)
|
||||||
@@ -114,7 +114,7 @@ instance ToTypedContent ServiceListRes where
|
|||||||
toTypedContent = toTypedContent . toJSON
|
toTypedContent = toTypedContent . toJSON
|
||||||
|
|
||||||
data ServiceAvailable = ServiceAvailable
|
data ServiceAvailable = ServiceAvailable
|
||||||
{ serviceAvailableId :: AppIdentifier
|
{ serviceAvailableId :: PkgId
|
||||||
, serviceAvailableTitle :: Text
|
, serviceAvailableTitle :: Text
|
||||||
, serviceAvailableVersion :: Version
|
, serviceAvailableVersion :: Version
|
||||||
, serviceAvailableIcon :: URL
|
, serviceAvailableIcon :: URL
|
||||||
@@ -142,7 +142,7 @@ instance ToContent ServiceAvailableRes where
|
|||||||
instance ToTypedContent ServiceAvailableRes where
|
instance ToTypedContent ServiceAvailableRes where
|
||||||
toTypedContent = toTypedContent . toJSON
|
toTypedContent = toTypedContent . toJSON
|
||||||
|
|
||||||
newtype VersionLatestRes = VersionLatestRes (HM.HashMap AppIdentifier (Maybe Version))
|
newtype VersionLatestRes = VersionLatestRes (HM.HashMap PkgId (Maybe Version))
|
||||||
deriving (Show, Generic)
|
deriving (Show, Generic)
|
||||||
instance ToJSON VersionLatestRes
|
instance ToJSON VersionLatestRes
|
||||||
instance ToContent VersionLatestRes where
|
instance ToContent VersionLatestRes where
|
||||||
@@ -174,7 +174,7 @@ instance ToTypedContent EosRes where
|
|||||||
toTypedContent = toTypedContent . toJSON
|
toTypedContent = toTypedContent . toJSON
|
||||||
|
|
||||||
data PackageVersion = PackageVersion
|
data PackageVersion = PackageVersion
|
||||||
{ packageVersionId :: AppIdentifier
|
{ packageVersionId :: PkgId
|
||||||
, packageVersionVersion :: VersionRange
|
, packageVersionVersion :: VersionRange
|
||||||
}
|
}
|
||||||
deriving Show
|
deriving Show
|
||||||
@@ -217,8 +217,7 @@ getReleaseNotesR = do
|
|||||||
case lookup "id" getParameters of
|
case lookup "id" getParameters of
|
||||||
Nothing -> sendResponseStatus status400 ("expected query param \"id\" to exist" :: Text)
|
Nothing -> sendResponseStatus status400 ("expected query param \"id\" to exist" :: Text)
|
||||||
Just package -> do
|
Just package -> do
|
||||||
(service, _) <- runDB $ fetchLatestApp (AppIdentifier package) >>= errOnNothing status404
|
(service, _) <- runDB $ fetchLatestApp (PkgId package) >>= errOnNothing status404 "package not found"
|
||||||
"package not found"
|
|
||||||
(_, mappedVersions) <- fetchAllAppVersions (entityKey service)
|
(_, mappedVersions) <- fetchAllAppVersions (entityKey service)
|
||||||
pure mappedVersions
|
pure mappedVersions
|
||||||
|
|
||||||
@@ -229,8 +228,8 @@ getVersionLatestR = do
|
|||||||
Nothing -> sendResponseStatus status400 ("expected query param \"ids\" to exist" :: Text)
|
Nothing -> sendResponseStatus status400 ("expected query param \"ids\" to exist" :: Text)
|
||||||
Just packages -> case eitherDecode $ BS.fromStrict $ encodeUtf8 packages of
|
Just packages -> case eitherDecode $ BS.fromStrict $ encodeUtf8 packages of
|
||||||
Left e -> sendResponseStatus status400 ("could not parse query param \"ids\"" <> show e :: Text)
|
Left e -> sendResponseStatus status400 ("could not parse query param \"ids\"" <> show e :: Text)
|
||||||
Right (p :: [AppIdentifier]) -> do
|
Right (p :: [PkgId]) -> do
|
||||||
let packageList :: [(AppIdentifier, Maybe Version)] = (, Nothing) <$> p
|
let packageList :: [(PkgId, Maybe Version)] = (, Nothing) <$> p
|
||||||
found <- runDB $ traverse fetchLatestApp $ fst <$> packageList
|
found <- runDB $ traverse fetchLatestApp $ fst <$> packageList
|
||||||
pure
|
pure
|
||||||
$ VersionLatestRes
|
$ VersionLatestRes
|
||||||
@@ -370,9 +369,9 @@ getPackageListR = do
|
|||||||
|
|
||||||
where
|
where
|
||||||
getPackageDetails :: MonadIO m
|
getPackageDetails :: MonadIO m
|
||||||
=> (HM.HashMap AppIdentifier ([Version], [CategoryTitle]))
|
=> (HM.HashMap PkgId ([Version], [CategoryTitle]))
|
||||||
-> PackageVersion
|
-> PackageVersion
|
||||||
-> m (Either Text ((Maybe Version), AppIdentifier))
|
-> m (Either Text ((Maybe Version), PkgId))
|
||||||
getPackageDetails metadata pv = do
|
getPackageDetails metadata pv = do
|
||||||
let appId = packageVersionId pv
|
let appId = packageVersionId pv
|
||||||
let spec = packageVersionVersion pv
|
let spec = packageVersionVersion pv
|
||||||
@@ -395,9 +394,9 @@ getPackageListR = do
|
|||||||
|
|
||||||
getServiceDetails :: (MonadUnliftIO m, Monad m, MonadError IOException m)
|
getServiceDetails :: (MonadUnliftIO m, Monad m, MonadError IOException m)
|
||||||
=> AppSettings
|
=> AppSettings
|
||||||
-> (HM.HashMap AppIdentifier ([Version], [CategoryTitle]))
|
-> (HM.HashMap PkgId ([Version], [CategoryTitle]))
|
||||||
-> Maybe Version
|
-> Maybe Version
|
||||||
-> AppIdentifier
|
-> PkgId
|
||||||
-> m (Either Text ServiceRes)
|
-> m (Either Text ServiceRes)
|
||||||
getServiceDetails settings metadata maybeVersion appId = do
|
getServiceDetails settings metadata maybeVersion appId = do
|
||||||
packageMetadata <- case HM.lookup appId metadata of
|
packageMetadata <- case HM.lookup appId metadata of
|
||||||
@@ -432,9 +431,9 @@ getServiceDetails settings metadata maybeVersion appId = do
|
|||||||
|
|
||||||
mapDependencyMetadata :: (MonadIO m)
|
mapDependencyMetadata :: (MonadIO m)
|
||||||
=> Text
|
=> Text
|
||||||
-> HM.HashMap AppIdentifier ([Version], [CategoryTitle])
|
-> HM.HashMap PkgId ([Version], [CategoryTitle])
|
||||||
-> (AppIdentifier, ServiceDependencyInfo)
|
-> (PkgId, ServiceDependencyInfo)
|
||||||
-> m (Either Text (AppIdentifier, DependencyInfo))
|
-> m (Either Text (PkgId, DependencyInfo))
|
||||||
mapDependencyMetadata domain metadata (appId, depInfo) = do
|
mapDependencyMetadata domain metadata (appId, depInfo) = do
|
||||||
depMetadata <- case HM.lookup appId metadata of
|
depMetadata <- case HM.lookup appId metadata of
|
||||||
Nothing -> throwIO $ NotFoundE [i|dependency metadata for #{appId} not found.|]
|
Nothing -> throwIO $ NotFoundE [i|dependency metadata for #{appId} not found.|]
|
||||||
@@ -497,7 +496,7 @@ fetchMostRecentAppVersions appId = select $ do
|
|||||||
limit 1
|
limit 1
|
||||||
pure version
|
pure version
|
||||||
|
|
||||||
fetchLatestApp :: MonadIO m => AppIdentifier -> ReaderT SqlBackend m (Maybe (P.Entity SApp, P.Entity SVersion))
|
fetchLatestApp :: MonadIO m => PkgId -> ReaderT SqlBackend m (Maybe (P.Entity SApp, P.Entity SVersion))
|
||||||
fetchLatestApp appId = selectOne $ do
|
fetchLatestApp appId = selectOne $ do
|
||||||
(service :& version) <-
|
(service :& version) <-
|
||||||
from
|
from
|
||||||
@@ -509,7 +508,7 @@ fetchLatestApp appId = selectOne $ do
|
|||||||
pure (service, version)
|
pure (service, version)
|
||||||
|
|
||||||
fetchLatestAppAtVersion :: MonadIO m
|
fetchLatestAppAtVersion :: MonadIO m
|
||||||
=> AppIdentifier
|
=> PkgId
|
||||||
-> Version
|
-> Version
|
||||||
-> ReaderT SqlBackend m (Maybe (P.Entity SApp, P.Entity SVersion))
|
-> ReaderT SqlBackend m (Maybe (P.Entity SApp, P.Entity SVersion))
|
||||||
fetchLatestAppAtVersion appId version' = selectOne $ do
|
fetchLatestAppAtVersion appId version' = selectOne $ do
|
||||||
@@ -522,7 +521,7 @@ fetchLatestAppAtVersion appId version' = selectOne $ do
|
|||||||
pure (service, version)
|
pure (service, version)
|
||||||
|
|
||||||
fetchPackageMetadata :: (MonadLogger m, MonadUnliftIO m)
|
fetchPackageMetadata :: (MonadLogger m, MonadUnliftIO m)
|
||||||
=> ReaderT SqlBackend m (HM.HashMap AppIdentifier ([Version], [CategoryTitle]))
|
=> ReaderT SqlBackend m (HM.HashMap PkgId ([Version], [CategoryTitle]))
|
||||||
fetchPackageMetadata = do
|
fetchPackageMetadata = do
|
||||||
let categoriesQuery = select $ do
|
let categoriesQuery = select $ do
|
||||||
(service :& category) <-
|
(service :& category) <-
|
||||||
|
|||||||
@@ -28,42 +28,42 @@ import Orphans.Emver ( )
|
|||||||
import System.Directory
|
import System.Directory
|
||||||
import Yesod
|
import Yesod
|
||||||
|
|
||||||
newtype AppIdentifier = AppIdentifier { unAppIdentifier :: Text }
|
newtype PkgId = PkgId { unPkgId :: Text }
|
||||||
deriving (Eq)
|
deriving (Eq)
|
||||||
instance IsString AppIdentifier where
|
instance IsString PkgId where
|
||||||
fromString = AppIdentifier . fromString
|
fromString = PkgId . fromString
|
||||||
instance Show AppIdentifier where
|
instance Show PkgId where
|
||||||
show = toS . unAppIdentifier
|
show = toS . unPkgId
|
||||||
instance Read AppIdentifier where
|
instance Read PkgId where
|
||||||
readsPrec _ s = [(AppIdentifier $ toS s, "")]
|
readsPrec _ s = [(PkgId $ toS s, "")]
|
||||||
instance Hashable AppIdentifier where
|
instance Hashable PkgId where
|
||||||
hashWithSalt n = hashWithSalt n . unAppIdentifier
|
hashWithSalt n = hashWithSalt n . unPkgId
|
||||||
instance FromJSON AppIdentifier where
|
instance FromJSON PkgId where
|
||||||
parseJSON = fmap AppIdentifier . parseJSON
|
parseJSON = fmap PkgId . parseJSON
|
||||||
instance ToJSON AppIdentifier where
|
instance ToJSON PkgId where
|
||||||
toJSON = toJSON . unAppIdentifier
|
toJSON = toJSON . unPkgId
|
||||||
instance FromJSONKey AppIdentifier where
|
instance FromJSONKey PkgId where
|
||||||
fromJSONKey = fmap AppIdentifier fromJSONKey
|
fromJSONKey = fmap PkgId fromJSONKey
|
||||||
instance ToJSONKey AppIdentifier where
|
instance ToJSONKey PkgId where
|
||||||
toJSONKey = contramap unAppIdentifier toJSONKey
|
toJSONKey = contramap unPkgId toJSONKey
|
||||||
instance PersistField AppIdentifier where
|
instance PersistField PkgId where
|
||||||
toPersistValue = PersistText . show
|
toPersistValue = PersistText . show
|
||||||
fromPersistValue (PersistText t) = Right . AppIdentifier $ toS t
|
fromPersistValue (PersistText t) = Right . PkgId $ toS t
|
||||||
fromPersistValue other = Left $ "Invalid AppId: " <> show other
|
fromPersistValue other = Left $ "Invalid AppId: " <> show other
|
||||||
instance PersistFieldSql AppIdentifier where
|
instance PersistFieldSql PkgId where
|
||||||
sqlType _ = SqlString
|
sqlType _ = SqlString
|
||||||
instance PathPiece AppIdentifier where
|
instance PathPiece PkgId where
|
||||||
fromPathPiece = fmap AppIdentifier . fromPathPiece
|
fromPathPiece = fmap PkgId . fromPathPiece
|
||||||
toPathPiece = unAppIdentifier
|
toPathPiece = unPkgId
|
||||||
instance ToContent AppIdentifier where
|
instance ToContent PkgId where
|
||||||
toContent = toContent . toJSON
|
toContent = toContent . toJSON
|
||||||
instance ToTypedContent AppIdentifier where
|
instance ToTypedContent PkgId where
|
||||||
toTypedContent = toTypedContent . toJSON
|
toTypedContent = toTypedContent . toJSON
|
||||||
|
|
||||||
data VersionInfo = VersionInfo
|
data VersionInfo = VersionInfo
|
||||||
{ versionInfoVersion :: Version
|
{ versionInfoVersion :: Version
|
||||||
, versionInfoReleaseNotes :: Text
|
, versionInfoReleaseNotes :: Text
|
||||||
, versionInfoDependencies :: HM.HashMap AppIdentifier VersionRange
|
, versionInfoDependencies :: HM.HashMap PkgId VersionRange
|
||||||
, versionInfoOsRequired :: VersionRange
|
, versionInfoOsRequired :: VersionRange
|
||||||
, versionInfoOsRecommended :: VersionRange
|
, versionInfoOsRecommended :: VersionRange
|
||||||
, versionInfoInstallAlert :: Maybe Text
|
, versionInfoInstallAlert :: Maybe Text
|
||||||
@@ -111,7 +111,7 @@ instance ToJSON StoreApp where
|
|||||||
, "version-info" .= storeAppVersionInfo
|
, "version-info" .= storeAppVersionInfo
|
||||||
, "timestamp" .= storeAppTimestamp
|
, "timestamp" .= storeAppTimestamp
|
||||||
]
|
]
|
||||||
newtype AppManifest = AppManifest { unAppManifest :: HM.HashMap AppIdentifier StoreApp}
|
newtype AppManifest = AppManifest { unAppManifest :: HM.HashMap PkgId StoreApp}
|
||||||
deriving (Show)
|
deriving (Show)
|
||||||
|
|
||||||
instance FromJSON AppManifest where
|
instance FromJSON AppManifest where
|
||||||
@@ -186,7 +186,7 @@ instance FromJSON ServiceAlert where
|
|||||||
"stop" -> pure STOP
|
"stop" -> pure STOP
|
||||||
_ -> fail "unknown service alert type"
|
_ -> fail "unknown service alert type"
|
||||||
data ServiceManifest = ServiceManifest
|
data ServiceManifest = ServiceManifest
|
||||||
{ serviceManifestId :: !AppIdentifier
|
{ serviceManifestId :: !PkgId
|
||||||
, serviceManifestTitle :: !Text
|
, serviceManifestTitle :: !Text
|
||||||
, serviceManifestVersion :: !Version
|
, serviceManifestVersion :: !Version
|
||||||
, serviceManifestDescriptionLong :: !Text
|
, serviceManifestDescriptionLong :: !Text
|
||||||
@@ -194,7 +194,7 @@ data ServiceManifest = ServiceManifest
|
|||||||
, serviceManifestReleaseNotes :: !Text
|
, serviceManifestReleaseNotes :: !Text
|
||||||
, serviceManifestIcon :: !(Maybe Text)
|
, serviceManifestIcon :: !(Maybe Text)
|
||||||
, serviceManifestAlerts :: !(HM.HashMap ServiceAlert (Maybe Text))
|
, serviceManifestAlerts :: !(HM.HashMap ServiceAlert (Maybe Text))
|
||||||
, serviceManifestDependencies :: !(HM.HashMap AppIdentifier ServiceDependencyInfo)
|
, serviceManifestDependencies :: !(HM.HashMap PkgId ServiceDependencyInfo)
|
||||||
}
|
}
|
||||||
deriving Show
|
deriving Show
|
||||||
instance FromJSON ServiceManifest where
|
instance FromJSON ServiceManifest where
|
||||||
|
|||||||
10
src/Model.hs
10
src/Model.hs
@@ -10,19 +10,19 @@
|
|||||||
|
|
||||||
module Model where
|
module Model where
|
||||||
|
|
||||||
import Startlude
|
|
||||||
import Database.Persist.TH
|
import Database.Persist.TH
|
||||||
import Lib.Types.Emver
|
|
||||||
import Lib.Types.Category
|
|
||||||
import Orphans.Emver ( )
|
|
||||||
import Lib.Types.AppIndex
|
import Lib.Types.AppIndex
|
||||||
|
import Lib.Types.Category
|
||||||
|
import Lib.Types.Emver
|
||||||
|
import Orphans.Emver ( )
|
||||||
|
import Startlude
|
||||||
|
|
||||||
share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase|
|
share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase|
|
||||||
SApp
|
SApp
|
||||||
createdAt UTCTime
|
createdAt UTCTime
|
||||||
updatedAt UTCTime Maybe
|
updatedAt UTCTime Maybe
|
||||||
title Text
|
title Text
|
||||||
appId AppIdentifier
|
appId PkgId
|
||||||
descShort Text
|
descShort Text
|
||||||
descLong Text
|
descLong Text
|
||||||
iconType Text
|
iconType Text
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ getBestVersion rootDir ext spec = do
|
|||||||
let best = getMax <$> foldMap (Just . Max . fst . unRegisteredAppVersion) satisfactory
|
let best = getMax <$> foldMap (Just . Max . fst . unRegisteredAppVersion) satisfactory
|
||||||
pure best
|
pure best
|
||||||
|
|
||||||
addPackageHeader :: (MonadUnliftIO m, MonadHandler m, KnownSymbol a) => FilePath -> FilePath -> Extension a -> m ()
|
addPackageHeader :: (MonadUnliftIO m, MonadHandler m) => FilePath -> FilePath -> S9PK -> m ()
|
||||||
addPackageHeader appMgrDir appDir appExt = do
|
addPackageHeader appMgrDir appDir appExt = do
|
||||||
packageHash <- getPackageHash appMgrDir appDir appExt
|
packageHash <- getPackageHash appMgrDir appDir appExt
|
||||||
addHeader "X-S9PK-HASH" $ decodeUtf8 packageHash
|
addHeader "X-S9PK-HASH" $ decodeUtf8 packageHash
|
||||||
|
|||||||
Reference in New Issue
Block a user