module U.Codebase.Sqlite.Project
  ( Project (..),
  )
where

import U.Codebase.Sqlite.DbId (ProjectId)
import Unison.Core.Orphans.Sqlite ()
import Unison.Core.Project (ProjectName)
import Unison.Prelude
import Unison.Sqlite (FromRow, ToRow)

-- | A project.
data Project = Project
  { Project -> ProjectId
projectId :: !ProjectId,
    Project -> ProjectName
name :: !ProjectName
  }
  deriving stock ((forall x. Project -> Rep Project x)
-> (forall x. Rep Project x -> Project) -> Generic Project
forall x. Rep Project x -> Project
forall x. Project -> Rep Project x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. Project -> Rep Project x
from :: forall x. Project -> Rep Project x
$cto :: forall x. Rep Project x -> Project
to :: forall x. Rep Project x -> Project
Generic, Int -> Project -> ShowS
[Project] -> ShowS
Project -> String
(Int -> Project -> ShowS)
-> (Project -> String) -> ([Project] -> ShowS) -> Show Project
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Project -> ShowS
showsPrec :: Int -> Project -> ShowS
$cshow :: Project -> String
show :: Project -> String
$cshowList :: [Project] -> ShowS
showList :: [Project] -> ShowS
Show, Project -> Project -> Bool
(Project -> Project -> Bool)
-> (Project -> Project -> Bool) -> Eq Project
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Project -> Project -> Bool
== :: Project -> Project -> Bool
$c/= :: Project -> Project -> Bool
/= :: Project -> Project -> Bool
Eq)
  deriving anyclass (Project -> [SQLData]
(Project -> [SQLData]) -> ToRow Project
forall a. (a -> [SQLData]) -> ToRow a
$ctoRow :: Project -> [SQLData]
toRow :: Project -> [SQLData]
ToRow, RowParser Project
RowParser Project -> FromRow Project
forall a. RowParser a -> FromRow a
$cfromRow :: RowParser Project
fromRow :: RowParser Project
FromRow)