packages feed

wikimusic-model-hs-1.2.0.0: src/WikiMusic/Model/Other.hs

{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE OverloadedLabels #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE NoFieldSelectors #-}

module WikiMusic.Model.Other
  ( User (..),
    SystemInformationResponse (..),
    Offset (..),
    Limit (..),
    FetchLimit (..),
    SearchInput (..),
  )
where

import Data.Aeson
import Data.OpenApi
import Relude
import Data.Time
import Optics

newtype Limit = Limit Int

newtype Offset = Offset Int

data SystemInformationResponse = SystemInformationResponse
  { reportedVersion :: Text,
    processStartedAt :: UTCTime
  }
  deriving (Eq, Show, Generic, FromJSON, ToJSON, ToSchema)

makeFieldLabelsNoPrefix ''SystemInformationResponse

data User = User
  { identifier :: Text,
    displayName :: Text,
    emailAddress :: Text,
    passwordHash :: Text,
    passwordResetToken :: Maybe Text,
    latestLoginAt :: Maybe UTCTime,
    latestLoginDevice :: Maybe Text,
    avatarUrl :: Maybe Text,
    createdAt :: UTCTime,
    lastEditedAt :: Maybe UTCTime,
    description :: Maybe Text
  }
  deriving (Eq, Show, Generic, FromJSON, ToJSON)

makeFieldLabelsNoPrefix ''User

newtype FetchLimit = FetchLimit
  { value :: Int
  }
  deriving (Generic, Eq, Show)

makeFieldLabelsNoPrefix ''FetchLimit

newtype SearchInput = SearchInput
  { value :: Text
  }
  deriving (Generic, Eq, Show)

makeFieldLabelsNoPrefix ''SearchInput

-- data ForumPage = ForumPage
--   { identifier :: Text,
--     displayName :: Text,
--     createdBy :: Text,
--     visibilityStatus :: Int,
--     approvedBy :: Maybe Text,
--     createdAt :: Text,
--     lastEditedAt :: Text,
-- viewCount :: Int
--   }
--   deriving (Eq, Show, Generic, FromJSON, ToJSON)

-- data ForumCategory = ForumCategory
--   { identifier :: Text,
--     parentIdentifier :: Maybe Text,
--     displayName :: Text,
--     createdBy :: Text,
--     visibilityStatus :: Int,
--     approvedBy :: Maybe Text,
--     createdAt :: Text,
--     lastEditedAt :: Text,
-- viewCount :: Int
--   }
--   deriving (Eq, Show, Generic, FromJSON, ToJSON)

-- data Genre = Genre
--   { identifier :: Text,
--     parentIdentifier :: Maybe Text,
--     displayName :: Text,
--     createdBy :: Text,
--     visibilityStatus :: Int,
--     approvedBy :: Maybe Text
--   }
--   deriving (Eq, Show, Generic, FromJSON, ToJSON)

-- data UserFavouriteSongFolder = UserFavouriteSongFolder
--   { identifier :: Text,
--     displayName :: Text
--   }
--   deriving (Eq, Show, Generic, FromJSON, ToJSON)

-- data UserFavouriteArtist = UserFavouriteArtist
--   { identifier :: Text,
--     displayName :: Text
--   }
--   deriving (Eq, Show, Generic, FromJSON, ToJSON)

-- data ForumPageComment = ForumPageComment
--   { identifier :: Text,
--     displayName :: Text
--   }
--   deriving (Eq, Show, Generic, FromJSON, ToJSON)

-- data ForumPageContent = ForumPageContent
--   { identifier :: Text,
--     displayName :: Text
--   }
--   deriving (Eq, Show, Generic, FromJSON, ToJSON)

-- data ForumPageExternalSource = ForumPageExternalSource
--   { identifier :: Text,
--     displayName :: Text
--   }
--   deriving (Eq, Show, Generic, FromJSON, ToJSON)

-- data ForumPageOpinion = ForumPageOpinion
--   { identifier :: Text,
--     displayName :: Text
--   }
--   deriving (Eq, Show, Generic, FromJSON, ToJSON)

-- data UserFavouriteForumPage = UserFavouriteForumPage
--   { identifier :: Text,
--     displayName :: Text
--   }
--   deriving (Eq, Show, Generic, FromJSON, ToJSON)

-- data ForumCategoryArtwork = ForumCategoryArtwork
--   { identifier :: Text,
--     displayName :: Text
--   }
--   deriving (Eq, Show, Generic, FromJSON, ToJSON)

-- data ForumCategoryComment = ForumCategoryComment
--   { identifier :: Text,
--     displayName :: Text
--   }
--   deriving (Eq, Show, Generic, FromJSON, ToJSON)

-- data ForumCategoryExtenalSource = ForumCategoryExtenalSource
--   { identifier :: Text,
--     displayName :: Text
--   }
--   deriving (Eq, Show, Generic, FromJSON, ToJSON)

-- data ForumCategoryOpinion = ForumCategoryOpinion
--   { identifier :: Text,
--     displayName :: Text
--   }
--   deriving (Eq, Show, Generic, FromJSON, ToJSON)

-- data UserFavouriteForumCategory = UserFavouriteForumCategory
--   { identifier :: Text,
--     displayName :: Text
--   }
--   deriving (Eq, Show, Generic, FromJSON, ToJSON)

-- data UserFavouriteGenre = UserFavouriteGenre
--   { identifier :: Text,
--     displayName :: Text
--   }
--   deriving (Eq, Show, Generic, FromJSON, ToJSON)

-- data UserFavouriteSong = UserFavouriteSong
--   { identifier :: Text,
--     displayName :: Text
--   }
--   deriving (Eq, Show, Generic, FromJSON, ToJSON)

-- data UserDonation = UserDonation
--   { identifier :: Text,
--     displayName :: Text
--   }
--   deriving (Eq, Show, Generic, FromJSON, ToJSON)

-- data UserRole = UserRole
--   { identifier :: Text,
--     displayName :: Text
--   }
--   deriving (Eq, Show, Generic, FromJSON, ToJSON)

-- data UserTrustScore = UserTrustScore
--   { identifier :: Text,
--     displayName :: Text
--   }
--   deriving (Eq, Show, Generic, FromJSON, ToJSON)

-- data SongToGenres = SongToGenres
--   { identifier :: Text,
--     displayName :: Text
--   }
--   deriving (Eq, Show, Generic, FromJSON, ToJSON)

-- data SongToArtists = SongToArtists
--   { identifier :: Text,
--     displayName :: Text
--   }
--   deriving (Eq, Show, Generic, FromJSON, ToJSON)

-- data ArtistToGenres = ArtistToGenres
--   { identifier :: Text,
--     displayName :: Text
--   }
--   deriving (Eq, Show, Generic, FromJSON, ToJSON)

-- data ForumPageToForumCategories = ForumPageToForumCategories
--   { identifier :: Text,
--     displayName :: Text
--   }
--   deriving (Eq, Show, Generic, FromJSON, ToJSON)