63 lines
1.4 KiB
Forth
63 lines
1.4 KiB
Forth
module Entity
|
|
open Dapper.FSharp
|
|
open DredgeFramework
|
|
open Pluralize.NET.Core
|
|
|
|
let getDatabaseTable<'x> =
|
|
let typeName = typeof<'x>.Name
|
|
Pluralizer().Pluralize typeName
|
|
|
|
let addToDatabase (record: 'x)=
|
|
let tableName = getDatabaseTable<'x>
|
|
insert {
|
|
table tableName
|
|
value record
|
|
excludeColumn "id"
|
|
}
|
|
|> db.InsertOutput
|
|
|> first
|
|
|
|
|
|
let inline updateInDatabase (record: ^x) =
|
|
let tableName = getDatabaseTable<'x>
|
|
let id = ((^x) : (member id : int) (record))
|
|
update {
|
|
table tableName
|
|
set record
|
|
where (eq "id" id)
|
|
}
|
|
|> db.Update
|
|
|
|
let getAll<'x> =
|
|
let typeName = typeof<'x>.Name
|
|
let tableName = Pluralizer().Pluralize typeName
|
|
|
|
select {
|
|
table tableName
|
|
}
|
|
|> db.Select<'x>
|
|
|
|
let getAllByColumn<'x> (column: string) (value: obj) =
|
|
let typeName = typeof<'x>.Name
|
|
let tableName = Pluralizer().Pluralize typeName
|
|
|
|
select {
|
|
table tableName
|
|
where (eq column value)
|
|
} |> db.Select<'x>
|
|
|
|
let getAllInVenue<'x> = getAllByColumn<'x> "venue_id" (getCurrentVenue ())
|
|
let getById<'x> (id: int) = getAllByColumn<'x> "id" id |> first
|
|
|
|
let deleteById<'x> id =
|
|
let typeName = typeof<'x>.Name
|
|
let tableName = Pluralizer().Pluralize typeName
|
|
|
|
let entity = getById<'x> id
|
|
|
|
delete {
|
|
table tableName
|
|
where (eq "id" id)
|
|
} |> db.Delete |> ignore
|
|
|
|
entity |