Logon form
There's no handler for the logon
route yet, so we need to create one.
Logon view will be rather straightforward - just a simple form with username and password.
Form.fs
20: 21: 22: 23: |
|
Form.fs
25:
|
|
Above snippets shows how the logon
form can be defined in our Form
module.
Password
is a type from Suave library and helps to determine the input type for HTML markup (we don't want anyone to see our secret pass as we type it).
View.fs
213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: |
|
As I promised, nothing fancy here.
We've already seen how the renderForm
works, so the above snippet is just another plain HTML form with some additional instructions at the top.
The GET handler for logon
is also very simple:
App.fs
108: 109: 110: |
|
App.fs
124:
|
|
Multiple items
namespace FSharp
--------------------
namespace Microsoft.FSharp
namespace FSharp
--------------------
namespace Microsoft.FSharp
Multiple items
namespace FSharp.Data
--------------------
namespace Microsoft.FSharp.Data
namespace FSharp.Data
--------------------
namespace Microsoft.FSharp.Data
namespace FSharp.Data.Sql
Multiple items
type LiteralAttribute =
inherit Attribute
new : unit -> LiteralAttribute
Full name: Microsoft.FSharp.Core.LiteralAttribute
--------------------
new : unit -> LiteralAttribute
type LiteralAttribute =
inherit Attribute
new : unit -> LiteralAttribute
Full name: Microsoft.FSharp.Core.LiteralAttribute
--------------------
new : unit -> LiteralAttribute
val ConnectionString : string
Full name: SuaveMusicStore.Db.ConnectionString
Full name: SuaveMusicStore.Db.ConnectionString
type Sql = SqlDataProvider<...>
Full name: SuaveMusicStore.Db.Sql
Full name: SuaveMusicStore.Db.Sql
type SqlDataProvider
Full name: FSharp.Data.Sql.SqlDataProvider
<summary>Typed representation of a database</summary>
<param name='ConnectionString'>The connection string for the SQL database</param>
<param name='ConnectionStringName'>The connection string name to select from a configuration file</param>
<param name='DatabaseVendor'> The target database vendor</param>
<param name='IndividualsAmount'>The amount of sample entities to project into the type system for each SQL entity type. Default 1000.</param>
<param name='UseOptionTypes'>If true, F# option types will be used in place of nullable database columns. If false, you will always receive the default value of the column's type even if it is null in the database.</param>
<param name='ResolutionPath'>The location to look for dynamically loaded assemblies containing database vendor specific connections and custom types.</param>
<param name='Owner'>The owner of the schema for this provider to resolve (Oracle Only)</param>
<param name='CaseSensitivityChange'>Should we do ToUpper or ToLower when generating table names?</param>
<param name='TableNames'>Comma separated table names list to limit a number of tables in big instances. The names can have '%' sign to handle it as in the 'LIKE' query (Oracle and MSSQL Only)</param>
<param name='OdbcQuote'>Odbc quote characters: Quote characters for the table and column names: `alias`, [alias]</param>
<param name='SQLiteLibrary'>Use System.Data.SQLite or Mono.Data.SQLite or select automatically (SQLite only)</param>
Full name: FSharp.Data.Sql.SqlDataProvider
<summary>Typed representation of a database</summary>
<param name='ConnectionString'>The connection string for the SQL database</param>
<param name='ConnectionStringName'>The connection string name to select from a configuration file</param>
<param name='DatabaseVendor'> The target database vendor</param>
<param name='IndividualsAmount'>The amount of sample entities to project into the type system for each SQL entity type. Default 1000.</param>
<param name='UseOptionTypes'>If true, F# option types will be used in place of nullable database columns. If false, you will always receive the default value of the column's type even if it is null in the database.</param>
<param name='ResolutionPath'>The location to look for dynamically loaded assemblies containing database vendor specific connections and custom types.</param>
<param name='Owner'>The owner of the schema for this provider to resolve (Oracle Only)</param>
<param name='CaseSensitivityChange'>Should we do ToUpper or ToLower when generating table names?</param>
<param name='TableNames'>Comma separated table names list to limit a number of tables in big instances. The names can have '%' sign to handle it as in the 'LIKE' query (Oracle and MSSQL Only)</param>
<param name='OdbcQuote'>Odbc quote characters: Quote characters for the table and column names: `alias`, [alias]</param>
<param name='SQLiteLibrary'>Use System.Data.SQLite or Mono.Data.SQLite or select automatically (SQLite only)</param>
namespace FSharp.Data.Sql.Common
type DatabaseProviderTypes =
| MSSQLSERVER = 0
| SQLITE = 1
| POSTGRESQL = 2
| MYSQL = 3
| ORACLE = 4
| MSACCESS = 5
| ODBC = 6
| FIREBIRD = 7
Full name: FSharp.Data.Sql.Common.DatabaseProviderTypes
| MSSQLSERVER = 0
| SQLITE = 1
| POSTGRESQL = 2
| MYSQL = 3
| ORACLE = 4
| MSACCESS = 5
| ODBC = 6
| FIREBIRD = 7
Full name: FSharp.Data.Sql.Common.DatabaseProviderTypes
Common.DatabaseProviderTypes.POSTGRESQL: Common.DatabaseProviderTypes = 2
type CaseSensitivityChange =
| ORIGINAL = 0
| TOUPPER = 1
| TOLOWER = 2
Full name: FSharp.Data.Sql.Common.CaseSensitivityChange
| ORIGINAL = 0
| TOUPPER = 1
| TOLOWER = 2
Full name: FSharp.Data.Sql.Common.CaseSensitivityChange
Common.CaseSensitivityChange.ORIGINAL: Common.CaseSensitivityChange = 0
type DbContext = SqlDataProvider<...>.dataContext
Full name: SuaveMusicStore.Db.DbContext
Full name: SuaveMusicStore.Db.DbContext
type dataContext =
member ClearUpdates : unit -> List<SqlEntity>
member CreateConnection : unit -> IDbConnection
member GetUpdates : unit -> List<SqlEntity>
member Public : publicSchema
member SubmitUpdates : unit -> Unit
member SubmitUpdatesAsync : unit -> Async<Unit>
nested type public.albumdetails.Individuals
nested type public.albumdetailsEntity
nested type public.albums.Individuals
nested type public.albumsEntity
...
Full name: FSharp.Data.Sql.SqlDataProvider,DatabaseVendor="2",ConnectionString="Server=192.168.99.100;Database=suavemusicstore;User Id=suave;Password=1234;",CaseSensitivityChange="0".dataContext
member ClearUpdates : unit -> List<SqlEntity>
member CreateConnection : unit -> IDbConnection
member GetUpdates : unit -> List<SqlEntity>
member Public : publicSchema
member SubmitUpdates : unit -> Unit
member SubmitUpdatesAsync : unit -> Async<Unit>
nested type public.albumdetails.Individuals
nested type public.albumdetailsEntity
nested type public.albums.Individuals
nested type public.albumsEntity
...
Full name: FSharp.Data.Sql.SqlDataProvider,DatabaseVendor="2",ConnectionString="Server=192.168.99.100;Database=suavemusicstore;User Id=suave;Password=1234;",CaseSensitivityChange="0".dataContext
type Album = SqlDataProvider<...>.dataContext.public.albumsEntity
Full name: SuaveMusicStore.Db.Album
Full name: SuaveMusicStore.Db.Album
type Genre = SqlDataProvider<...>.dataContext.public.genresEntity
Full name: SuaveMusicStore.Db.Genre
Full name: SuaveMusicStore.Db.Genre
type AlbumDetails = SqlDataProvider<...>.dataContext.public.albumdetailsEntity
Full name: SuaveMusicStore.Db.AlbumDetails
Full name: SuaveMusicStore.Db.AlbumDetails
type Artist = SqlDataProvider<...>.dataContext.public.artistsEntity
Full name: SuaveMusicStore.Db.Artist
Full name: SuaveMusicStore.Db.Artist
val getContext : unit -> SqlDataProvider<...>.dataContext
Full name: SuaveMusicStore.Db.getContext
Full name: SuaveMusicStore.Db.getContext
SqlDataProvider<...>.GetDataContext() : SqlDataProvider<...>.dataContext
<summary>Returns an instance of the SQL Provider using the static parameters</summary>
SqlDataProvider<...>.GetDataContext(transactionOptions: Transactions.TransactionOptions) : SqlDataProvider<...>.dataContext
<summary>Returns an instance of the SQL Provider</summary>
<param name='transactionOptions'>TransactionOptions for the transaction created on SubmitChanges.</param>
SqlDataProvider<...>.GetDataContext(connectionString: string) : SqlDataProvider<...>.dataContext
<summary>Returns an instance of the SQL Provider</summary>
<param name='connectionString'>The database connection string</param>
SqlDataProvider<...>.GetDataContext(connectionString: string, transactionOptions: Transactions.TransactionOptions) : SqlDataProvider<...>.dataContext
<summary>Returns an instance of the SQL Provider</summary>
<param name='connectionString'>The database connection string</param>
<param name='transactionOptions'>TransactionOptions for the transaction created on SubmitChanges.</param>
SqlDataProvider<...>.GetDataContext(connectionString: string, resolutionPath: string) : SqlDataProvider<...>.dataContext
<summary>Returns an instance of the SQL Provider</summary>
<param name='connectionString'>The database connection string</param>
<param name='resolutionPath'>The location to look for dynamically loaded assemblies containing database vendor specific connections and custom types</param>
SqlDataProvider<...>.GetDataContext(connectionString: string, resolutionPath: string, transactionOptions: Transactions.TransactionOptions) : SqlDataProvider<...>.dataContext
<summary>Returns an instance of the SQL Provider</summary>
<param name='connectionString'>The database connection string</param>
<param name='resolutionPath'>The location to look for dynamically loaded assemblies containing database vendor specific connections and custom types</param>
<param name='transactionOptions'>TransactionOptions for the transaction created on SubmitChanges.</param>
<summary>Returns an instance of the SQL Provider using the static parameters</summary>
SqlDataProvider<...>.GetDataContext(transactionOptions: Transactions.TransactionOptions) : SqlDataProvider<...>.dataContext
<summary>Returns an instance of the SQL Provider</summary>
<param name='transactionOptions'>TransactionOptions for the transaction created on SubmitChanges.</param>
SqlDataProvider<...>.GetDataContext(connectionString: string) : SqlDataProvider<...>.dataContext
<summary>Returns an instance of the SQL Provider</summary>
<param name='connectionString'>The database connection string</param>
SqlDataProvider<...>.GetDataContext(connectionString: string, transactionOptions: Transactions.TransactionOptions) : SqlDataProvider<...>.dataContext
<summary>Returns an instance of the SQL Provider</summary>
<param name='connectionString'>The database connection string</param>
<param name='transactionOptions'>TransactionOptions for the transaction created on SubmitChanges.</param>
SqlDataProvider<...>.GetDataContext(connectionString: string, resolutionPath: string) : SqlDataProvider<...>.dataContext
<summary>Returns an instance of the SQL Provider</summary>
<param name='connectionString'>The database connection string</param>
<param name='resolutionPath'>The location to look for dynamically loaded assemblies containing database vendor specific connections and custom types</param>
SqlDataProvider<...>.GetDataContext(connectionString: string, resolutionPath: string, transactionOptions: Transactions.TransactionOptions) : SqlDataProvider<...>.dataContext
<summary>Returns an instance of the SQL Provider</summary>
<param name='connectionString'>The database connection string</param>
<param name='resolutionPath'>The location to look for dynamically loaded assemblies containing database vendor specific connections and custom types</param>
<param name='transactionOptions'>TransactionOptions for the transaction created on SubmitChanges.</param>
val getGenres : ctx:DbContext -> Genre list
Full name: SuaveMusicStore.Db.getGenres
Full name: SuaveMusicStore.Db.getGenres
val ctx : DbContext
type 'T list = List<'T>
Full name: Microsoft.FSharp.Collections.list<_>
Full name: Microsoft.FSharp.Collections.list<_>
property SqlDataProvider<...>.dataContext.Public: SqlDataProvider<...>.dataContext.publicSchema
property SqlDataProvider<...>.dataContext.publicSchema.Genres: SqlDataProvider<...>.dataContext.publicSchema.public.genres
<summary> The base table genres belonging to schema public</summary>
<summary> The base table genres belonging to schema public</summary>
Multiple items
module Seq
from FSharp.Data.Sql
--------------------
module Seq
from Microsoft.FSharp.Collections
module Seq
from FSharp.Data.Sql
--------------------
module Seq
from Microsoft.FSharp.Collections
val toList : source:seq<'T> -> 'T list
Full name: Microsoft.FSharp.Collections.Seq.toList
Full name: Microsoft.FSharp.Collections.Seq.toList
val getAlbumsForGenre : genreName:string -> ctx:DbContext -> Album list
Full name: SuaveMusicStore.Db.getAlbumsForGenre
Full name: SuaveMusicStore.Db.getAlbumsForGenre
val genreName : string
val query : Linq.QueryBuilder
Full name: Microsoft.FSharp.Core.ExtraTopLevelOperators.query
Full name: Microsoft.FSharp.Core.ExtraTopLevelOperators.query
val album : SqlDataProvider<...>.dataContext.public.albumsEntity
property SqlDataProvider<...>.dataContext.publicSchema.Albums: SqlDataProvider<...>.dataContext.publicSchema.public.albums
<summary> The base table albums belonging to schema public</summary>
<summary> The base table albums belonging to schema public</summary>
custom operation: join var in collection on (outerKey = innerKey). Note that parentheses are required after 'on'
Calls Linq.QueryBuilder.Join
Calls Linq.QueryBuilder.Join
val genre : SqlDataProvider<...>.dataContext.public.genresEntity
property SqlDataProvider<...>.dataContext.public.genresEntity.Genreid: int
<summary> integer</summary>
<summary> integer</summary>
custom operation: where (bool)
Calls Linq.QueryBuilder.Where
Calls Linq.QueryBuilder.Where
property SqlDataProvider<...>.dataContext.public.genresEntity.Name: string
<summary> character varying(120)</summary>
<summary> character varying(120)</summary>
custom operation: select ('Result)
Calls Linq.QueryBuilder.Select
Calls Linq.QueryBuilder.Select
val getAlbumDetails : id:int -> ctx:DbContext -> AlbumDetails option
Full name: SuaveMusicStore.Db.getAlbumDetails
Full name: SuaveMusicStore.Db.getAlbumDetails
val id : int
type 'T option = Option<'T>
Full name: Microsoft.FSharp.Core.option<_>
Full name: Microsoft.FSharp.Core.option<_>
val album : SqlDataProvider<...>.dataContext.public.albumdetailsEntity
property SqlDataProvider<...>.dataContext.publicSchema.Albumdetails: SqlDataProvider<...>.dataContext.publicSchema.public.albumdetails
<summary> The view albumdetails belonging to schema public</summary>
<summary> The view albumdetails belonging to schema public</summary>
property SqlDataProvider<...>.dataContext.public.albumdetailsEntity.Albumid: int
<summary> integer</summary>
<summary> integer</summary>
val tryHead : source:seq<'T> -> 'T option
Full name: Microsoft.FSharp.Collections.Seq.tryHead
Full name: Microsoft.FSharp.Collections.Seq.tryHead
val getAlbumsDetails : ctx:DbContext -> AlbumDetails list
Full name: SuaveMusicStore.Db.getAlbumsDetails
Full name: SuaveMusicStore.Db.getAlbumsDetails
Multiple items
module List
from FSharp.Data.Sql
--------------------
module List
from Microsoft.FSharp.Collections
--------------------
type List<'T> =
| ( [] )
| ( :: ) of Head: 'T * Tail: 'T list
interface IEnumerable
interface IEnumerable<'T>
member GetSlice : startIndex:int option * endIndex:int option -> 'T list
member Head : 'T
member IsEmpty : bool
member Item : index:int -> 'T with get
member Length : int
member Tail : 'T list
static member Cons : head:'T * tail:'T list -> 'T list
static member Empty : 'T list
Full name: Microsoft.FSharp.Collections.List<_>
module List
from FSharp.Data.Sql
--------------------
module List
from Microsoft.FSharp.Collections
--------------------
type List<'T> =
| ( [] )
| ( :: ) of Head: 'T * Tail: 'T list
interface IEnumerable
interface IEnumerable<'T>
member GetSlice : startIndex:int option * endIndex:int option -> 'T list
member Head : 'T
member IsEmpty : bool
member Item : index:int -> 'T with get
member Length : int
member Tail : 'T list
static member Cons : head:'T * tail:'T list -> 'T list
static member Empty : 'T list
Full name: Microsoft.FSharp.Collections.List<_>
val sortBy : projection:('T -> 'Key) -> list:'T list -> 'T list (requires comparison)
Full name: Microsoft.FSharp.Collections.List.sortBy
Full name: Microsoft.FSharp.Collections.List.sortBy
val a : SqlDataProvider<...>.dataContext.public.albumdetailsEntity
property SqlDataProvider<...>.dataContext.public.albumdetailsEntity.Artist: string
<summary> character varying(120)</summary>
<summary> character varying(120)</summary>
val getAlbum : id:int -> ctx:DbContext -> Album option
Full name: SuaveMusicStore.Db.getAlbum
Full name: SuaveMusicStore.Db.getAlbum
property SqlDataProvider<...>.dataContext.public.albumsEntity.Albumid: int
<summary> integer</summary>
<summary> integer</summary>
val deleteAlbum : album:Album -> ctx:DbContext -> Unit
Full name: SuaveMusicStore.Db.deleteAlbum
Full name: SuaveMusicStore.Db.deleteAlbum
val album : Album
member Common.SqlEntity.Delete : unit -> unit
SqlDataProvider<...>.dataContext.SubmitUpdates() : Unit
<summary>Save changes to data-source. May throws errors: To deal with non-saved items use GetUpdates() and ClearUpdates().</summary>
<summary>Save changes to data-source. May throws errors: To deal with non-saved items use GetUpdates() and ClearUpdates().</summary>
val getArtists : ctx:DbContext -> Artist list
Full name: SuaveMusicStore.Db.getArtists
Full name: SuaveMusicStore.Db.getArtists
property SqlDataProvider<...>.dataContext.publicSchema.Artists: SqlDataProvider<...>.dataContext.publicSchema.public.artists
<summary> The base table artists belonging to schema public</summary>
<summary> The base table artists belonging to schema public</summary>
val createAlbum : artistId:int * genreId:int * price:decimal * title:string -> ctx:DbContext -> Unit
Full name: SuaveMusicStore.Db.createAlbum
Full name: SuaveMusicStore.Db.createAlbum
val artistId : int
val genreId : int
val price : decimal
val title : string
SqlDataProvider<...>.dataContext.publicSchema.public.albums.Create() : SqlDataProvider<...>.dataContext.public.albumsEntity
SqlDataProvider<...>.dataContext.publicSchema.public.albums.Create(data: System.Collections.Generic.IEnumerable<string * obj>) : SqlDataProvider<...>.dataContext.public.albumsEntity
<summary>Item array of database columns:
artistid,genreid,price,title</summary>
SqlDataProvider<...>.dataContext.publicSchema.public.albums.Create(artistid: int, genreid: int, price: decimal, title: string) : SqlDataProvider<...>.dataContext.public.albumsEntity
SqlDataProvider<...>.dataContext.publicSchema.public.albums.Create(data: System.Collections.Generic.IEnumerable<string * obj>) : SqlDataProvider<...>.dataContext.public.albumsEntity
<summary>Item array of database columns:
artistid,genreid,price,title</summary>
SqlDataProvider<...>.dataContext.publicSchema.public.albums.Create(artistid: int, genreid: int, price: decimal, title: string) : SqlDataProvider<...>.dataContext.public.albumsEntity
val ignore : value:'T -> unit
Full name: Microsoft.FSharp.Core.Operators.ignore
Full name: Microsoft.FSharp.Core.Operators.ignore
val updateAlbum : album:Album -> artistId:int * genreId:int * price:decimal * title:string -> ctx:DbContext -> Unit
Full name: SuaveMusicStore.Db.updateAlbum
Full name: SuaveMusicStore.Db.updateAlbum
property SqlDataProvider<...>.dataContext.public.albumsEntity.Artistid: int
<summary> integer</summary>
<summary> integer</summary>
property SqlDataProvider<...>.dataContext.public.albumsEntity.Genreid: int
<summary> integer</summary>
<summary> integer</summary>
property SqlDataProvider<...>.dataContext.public.albumsEntity.Price: decimal
<summary> numeric</summary>
<summary> numeric</summary>
property SqlDataProvider<...>.dataContext.public.albumsEntity.Title: string
<summary> character varying(160)</summary>
<summary> character varying(160)</summary>
type IntPath = PrintfFormat<(int -> string),unit,string,string,int>
Full name: SuaveMusicStore.Path.IntPath
Full name: SuaveMusicStore.Path.IntPath
Multiple items
type PrintfFormat<'Printer,'State,'Residue,'Result> =
new : value:string -> PrintfFormat<'Printer,'State,'Residue,'Result>
member Value : string
Full name: Microsoft.FSharp.Core.PrintfFormat<_,_,_,_>
--------------------
type PrintfFormat<'Printer,'State,'Residue,'Result,'Tuple> =
inherit PrintfFormat<'Printer,'State,'Residue,'Result>
new : value:string -> PrintfFormat<'Printer,'State,'Residue,'Result,'Tuple>
Full name: Microsoft.FSharp.Core.PrintfFormat<_,_,_,_,_>
--------------------
new : value:string -> PrintfFormat<'Printer,'State,'Residue,'Result>
--------------------
new : value:string -> PrintfFormat<'Printer,'State,'Residue,'Result,'Tuple>
type PrintfFormat<'Printer,'State,'Residue,'Result> =
new : value:string -> PrintfFormat<'Printer,'State,'Residue,'Result>
member Value : string
Full name: Microsoft.FSharp.Core.PrintfFormat<_,_,_,_>
--------------------
type PrintfFormat<'Printer,'State,'Residue,'Result,'Tuple> =
inherit PrintfFormat<'Printer,'State,'Residue,'Result>
new : value:string -> PrintfFormat<'Printer,'State,'Residue,'Result,'Tuple>
Full name: Microsoft.FSharp.Core.PrintfFormat<_,_,_,_,_>
--------------------
new : value:string -> PrintfFormat<'Printer,'State,'Residue,'Result>
--------------------
new : value:string -> PrintfFormat<'Printer,'State,'Residue,'Result,'Tuple>
Multiple items
val int : value:'T -> int (requires member op_Explicit)
Full name: Microsoft.FSharp.Core.Operators.int
--------------------
type int = int32
Full name: Microsoft.FSharp.Core.int
--------------------
type int<'Measure> = int
Full name: Microsoft.FSharp.Core.int<_>
val int : value:'T -> int (requires member op_Explicit)
Full name: Microsoft.FSharp.Core.Operators.int
--------------------
type int = int32
Full name: Microsoft.FSharp.Core.int
--------------------
type int<'Measure> = int
Full name: Microsoft.FSharp.Core.int<_>
Multiple items
val string : value:'T -> string
Full name: Microsoft.FSharp.Core.Operators.string
--------------------
type string = System.String
Full name: Microsoft.FSharp.Core.string
val string : value:'T -> string
Full name: Microsoft.FSharp.Core.Operators.string
--------------------
type string = System.String
Full name: Microsoft.FSharp.Core.string
type unit = Unit
Full name: Microsoft.FSharp.Core.unit
Full name: Microsoft.FSharp.Core.unit
val withParam : key:string * value:string -> path:string -> string
Full name: SuaveMusicStore.Path.withParam
Full name: SuaveMusicStore.Path.withParam
val key : string
val value : string
val path : string
val sprintf : format:Printf.StringFormat<'T> -> 'T
Full name: Microsoft.FSharp.Core.ExtraTopLevelOperators.sprintf
Full name: Microsoft.FSharp.Core.ExtraTopLevelOperators.sprintf
val home : string
Full name: SuaveMusicStore.Path.home
Full name: SuaveMusicStore.Path.home
val overview : string
Full name: SuaveMusicStore.Path.Store.overview
Full name: SuaveMusicStore.Path.Store.overview
val browse : string
Full name: SuaveMusicStore.Path.Store.browse
Full name: SuaveMusicStore.Path.Store.browse
val details : IntPath
Full name: SuaveMusicStore.Path.Store.details
Full name: SuaveMusicStore.Path.Store.details
val browseKey : string
Full name: SuaveMusicStore.Path.Store.browseKey
Full name: SuaveMusicStore.Path.Store.browseKey
val manage : string
Full name: SuaveMusicStore.Path.Admin.manage
Full name: SuaveMusicStore.Path.Admin.manage
val createAlbum : string
Full name: SuaveMusicStore.Path.Admin.createAlbum
Full name: SuaveMusicStore.Path.Admin.createAlbum
val editAlbum : IntPath
Full name: SuaveMusicStore.Path.Admin.editAlbum
Full name: SuaveMusicStore.Path.Admin.editAlbum
val deleteAlbum : IntPath
Full name: SuaveMusicStore.Path.Admin.deleteAlbum
Full name: SuaveMusicStore.Path.Admin.deleteAlbum
module Account
from SuaveMusicStore.Path
from SuaveMusicStore.Path
val logon : string
Full name: SuaveMusicStore.Path.Account.logon
Full name: SuaveMusicStore.Path.Account.logon
val logoff : string
Full name: SuaveMusicStore.Path.Account.logoff
Full name: SuaveMusicStore.Path.Account.logoff
namespace Suave
module Form
from Suave
from Suave
type Album =
{ArtistId: decimal;
GenreId: decimal;
Title: string;
Price: decimal;
ArtUrl: string;}
Full name: SuaveMusicStore.Form.Album
{ArtistId: decimal;
GenreId: decimal;
Title: string;
Price: decimal;
ArtUrl: string;}
Full name: SuaveMusicStore.Form.Album
Album.ArtistId: decimal
Multiple items
val decimal : value:'T -> decimal (requires member op_Explicit)
Full name: Microsoft.FSharp.Core.Operators.decimal
--------------------
type decimal = System.Decimal
Full name: Microsoft.FSharp.Core.decimal
--------------------
type decimal<'Measure> = decimal
Full name: Microsoft.FSharp.Core.decimal<_>
val decimal : value:'T -> decimal (requires member op_Explicit)
Full name: Microsoft.FSharp.Core.Operators.decimal
--------------------
type decimal = System.Decimal
Full name: Microsoft.FSharp.Core.decimal
--------------------
type decimal<'Measure> = decimal
Full name: Microsoft.FSharp.Core.decimal<_>
Album.GenreId: decimal
Album.Title: string
Album.Price: decimal
Album.ArtUrl: string
val album : Form<Album>
Full name: SuaveMusicStore.Form.album
Full name: SuaveMusicStore.Form.album
Multiple items
union case Form.Form: FormProp<'a> list * ServerSideValidation<'a> list -> Form<'a>
--------------------
type Form<'a> = | Form of FormProp<'a> list * ServerSideValidation<'a> list
Full name: Suave.Form.Form<_>
union case Form.Form: FormProp<'a> list * ServerSideValidation<'a> list -> Form<'a>
--------------------
type Form<'a> = | Form of FormProp<'a> list * ServerSideValidation<'a> list
Full name: Suave.Form.Form<_>
union case FormProp.TextProp: Property<'a,string> -> FormProp<'a>
val f : Album
val maxLength : max:int -> Validation<string>
Full name: Suave.Form.maxLength
Full name: Suave.Form.maxLength
union case FormProp.DecimalProp: Property<'a,decimal> -> FormProp<'a>
val min : min:decimal -> Validation<decimal>
Full name: Suave.Form.min
Full name: Suave.Form.min
val max : max:decimal -> Validation<decimal>
Full name: Suave.Form.max
Full name: Suave.Form.max
val step : step:System.Decimal -> Validation<decimal>
Full name: Suave.Form.step
Full name: Suave.Form.step
type Logon =
{Username: string;
Password: Password;}
Full name: SuaveMusicStore.Form.Logon
{Username: string;
Password: Password;}
Full name: SuaveMusicStore.Form.Logon
Logon.Username: string
Multiple items
Logon.Password: Password
--------------------
type Password = | Password of string
Full name: Suave.Form.Password
Logon.Password: Password
--------------------
type Password = | Password of string
Full name: Suave.Form.Password
val logon : Form<Logon>
Full name: SuaveMusicStore.Form.logon
Full name: SuaveMusicStore.Form.logon
module Html
from Suave
from Suave
val em : s:string -> Node
Full name: SuaveMusicStore.View.em
Full name: SuaveMusicStore.View.em
val s : string
val tag : tag:string -> attr:Attribute list -> contents:Node list -> Node
Full name: Suave.Html.tag
Full name: Suave.Html.tag
union case Node.Text: string -> Node
val cssLink : href:string -> Node
Full name: SuaveMusicStore.View.cssLink
Full name: SuaveMusicStore.View.cssLink
val href : string
val link : attr:Attribute list -> Node
Full name: Suave.Html.link
Full name: Suave.Html.link
val h2 : s:string -> Node
Full name: SuaveMusicStore.View.h2
Full name: SuaveMusicStore.View.h2
val ul : nodes:Node list -> Node
Full name: SuaveMusicStore.View.ul
Full name: SuaveMusicStore.View.ul
val nodes : Node list
val ulAttr : attr:Attribute list -> nodes:Node list -> Node
Full name: SuaveMusicStore.View.ulAttr
Full name: SuaveMusicStore.View.ulAttr
val attr : Attribute list
val li : (Node list -> Node)
Full name: SuaveMusicStore.View.li
Full name: SuaveMusicStore.View.li
val table : x:Node list -> Node
Full name: SuaveMusicStore.View.table
Full name: SuaveMusicStore.View.table
val x : Node list
val th : x:Node list -> Node
Full name: SuaveMusicStore.View.th
Full name: SuaveMusicStore.View.th
val tr : x:Node list -> Node
Full name: SuaveMusicStore.View.tr
Full name: SuaveMusicStore.View.tr
val td : x:Node list -> Node
Full name: SuaveMusicStore.View.td
Full name: SuaveMusicStore.View.td
val strong : s:string -> Node
Full name: SuaveMusicStore.View.strong
Full name: SuaveMusicStore.View.strong
val text : s:string -> Node list
Full name: Suave.Html.text
Full name: Suave.Html.text
val form : x:Node list -> Node
Full name: SuaveMusicStore.View.form
Full name: SuaveMusicStore.View.form
val formInput : (('a -> Quotations.Expr<'b>) -> Attribute list -> Form<'a> -> Node)
Full name: SuaveMusicStore.View.formInput
Full name: SuaveMusicStore.View.formInput
val input : quotF:('a -> Quotations.Expr<'b>) -> attrs:Attribute list -> form:Form<'a> -> Node
Full name: Suave.Form.input
Full name: Suave.Form.input
val submitInput : value:string -> Node
Full name: SuaveMusicStore.View.submitInput
Full name: SuaveMusicStore.View.submitInput
val input : attr:Attribute list -> Node
Full name: Suave.Html.input
Full name: Suave.Html.input
type Field<'a> =
{Label: string;
Html: Form<'a> -> Node;}
Full name: SuaveMusicStore.View.Field<_>
{Label: string;
Html: Form<'a> -> Node;}
Full name: SuaveMusicStore.View.Field<_>
Field.Label: string
Multiple items
Field.Html: Form<'a> -> Node
--------------------
type HtmlAttribute = string * string
Full name: Suave.Form.HtmlAttribute
Field.Html: Form<'a> -> Node
--------------------
type HtmlAttribute = string * string
Full name: Suave.Form.HtmlAttribute
Multiple items
union case Form.Form: FormProp<'a> list * ServerSideValidation<'a> list -> Form<'a>
--------------------
module Form
from SuaveMusicStore
--------------------
type Form<'a> = | Form of FormProp<'a> list * ServerSideValidation<'a> list
Full name: Suave.Form.Form<_>
union case Form.Form: FormProp<'a> list * ServerSideValidation<'a> list -> Form<'a>
--------------------
module Form
from SuaveMusicStore
--------------------
type Form<'a> = | Form of FormProp<'a> list * ServerSideValidation<'a> list
Full name: Suave.Form.Form<_>
type Node =
| Element of Element * Node list
| VoidElement of Element
| Text of string
| Raw of string
| WhiteSpace of string
Full name: Suave.Html.Node
| Element of Element * Node list
| VoidElement of Element
| Text of string
| Raw of string
| WhiteSpace of string
Full name: Suave.Html.Node
type Fieldset<'a> =
{Legend: string;
Fields: Field<'a> list;}
Full name: SuaveMusicStore.View.Fieldset<_>
{Legend: string;
Fields: Field<'a> list;}
Full name: SuaveMusicStore.View.Fieldset<_>
Fieldset.Legend: string
Fieldset.Fields: Field<'a> list
type FormLayout<'a> =
{Fieldsets: Fieldset<'a> list;
SubmitText: string;
Form: Form<'a>;}
Full name: SuaveMusicStore.View.FormLayout<_>
{Fieldsets: Fieldset<'a> list;
SubmitText: string;
Form: Form<'a>;}
Full name: SuaveMusicStore.View.FormLayout<_>
FormLayout.Fieldsets: Fieldset<'a> list
FormLayout.SubmitText: string
Multiple items
FormLayout.Form: Form<'a>
--------------------
module Form
from SuaveMusicStore
--------------------
type Form<'a> = | Form of FormProp<'a> list * ServerSideValidation<'a> list
Full name: Suave.Form.Form<_>
FormLayout.Form: Form<'a>
--------------------
module Form
from SuaveMusicStore
--------------------
type Form<'a> = | Form of FormProp<'a> list * ServerSideValidation<'a> list
Full name: Suave.Form.Form<_>
val renderForm : layout:FormLayout<'a> -> Node
Full name: SuaveMusicStore.View.renderForm
Full name: SuaveMusicStore.View.renderForm
val layout : FormLayout<'a>
val set : Fieldset<'a>
val field : Field<'a>
val div : (Attribute list -> Node list -> Node)
Full name: Suave.Html.div
Full name: Suave.Html.div
Field.Html: Form<'a> -> Node
FormLayout.Form: Form<'a>
val home : Node list
Full name: SuaveMusicStore.View.home
Full name: SuaveMusicStore.View.home
val store : genres:string list -> Node list
Full name: SuaveMusicStore.View.store
Full name: SuaveMusicStore.View.store
val genres : string list
val p : (Attribute list -> Node list -> Node)
Full name: Suave.Html.p
Full name: Suave.Html.p
Multiple items
module List
from Microsoft.FSharp.Collections
--------------------
type List<'T> =
| ( [] )
| ( :: ) of Head: 'T * Tail: 'T list
interface IEnumerable
interface IEnumerable<'T>
member GetSlice : startIndex:int option * endIndex:int option -> 'T list
member Head : 'T
member IsEmpty : bool
member Item : index:int -> 'T with get
member Length : int
member Tail : 'T list
static member Cons : head:'T * tail:'T list -> 'T list
static member Empty : 'T list
Full name: Microsoft.FSharp.Collections.List<_>
module List
from Microsoft.FSharp.Collections
--------------------
type List<'T> =
| ( [] )
| ( :: ) of Head: 'T * Tail: 'T list
interface IEnumerable
interface IEnumerable<'T>
member GetSlice : startIndex:int option * endIndex:int option -> 'T list
member Head : 'T
member IsEmpty : bool
member Item : index:int -> 'T with get
member Length : int
member Tail : 'T list
static member Cons : head:'T * tail:'T list -> 'T list
static member Empty : 'T list
Full name: Microsoft.FSharp.Collections.List<_>
val length : list:'T list -> int
Full name: Microsoft.FSharp.Collections.List.length
Full name: Microsoft.FSharp.Collections.List.length
val genre : string
val url : string
module Path
from SuaveMusicStore
from SuaveMusicStore
module Store
from SuaveMusicStore.Path
from SuaveMusicStore.Path
val a : href:string -> attr:Attribute list -> (Node list -> Node)
Full name: Suave.Html.a
Full name: Suave.Html.a
val browse : genre:string -> albums:Db.Album list -> Node list
Full name: SuaveMusicStore.View.browse
Full name: SuaveMusicStore.View.browse
val albums : Db.Album list
module Db
from SuaveMusicStore
from SuaveMusicStore
type Album = FSharp.Data.Sql.SqlDataProvider<...>.dataContext.public.albumsEntity
Full name: SuaveMusicStore.Db.Album
Full name: SuaveMusicStore.Db.Album
val album : Db.Album
val details : Path.IntPath
Full name: SuaveMusicStore.Path.Store.details
Full name: SuaveMusicStore.Path.Store.details
property FSharp.Data.Sql.SqlDataProvider<...>.dataContext.public.albumsEntity.Albumid: int
<summary> integer</summary>
<summary> integer</summary>
property FSharp.Data.Sql.SqlDataProvider<...>.dataContext.public.albumsEntity.Title: string
<summary> character varying(160)</summary>
<summary> character varying(160)</summary>
val details : album:Db.AlbumDetails -> Node list
Full name: SuaveMusicStore.View.details
Full name: SuaveMusicStore.View.details
val album : Db.AlbumDetails
type AlbumDetails = FSharp.Data.Sql.SqlDataProvider<...>.dataContext.public.albumdetailsEntity
Full name: SuaveMusicStore.Db.AlbumDetails
Full name: SuaveMusicStore.Db.AlbumDetails
property FSharp.Data.Sql.SqlDataProvider<...>.dataContext.public.albumdetailsEntity.Title: string
<summary> character varying(160)</summary>
<summary> character varying(160)</summary>
val img : attr:Attribute list -> Node
Full name: Suave.Html.img
Full name: Suave.Html.img
property FSharp.Data.Sql.SqlDataProvider<...>.dataContext.public.albumdetailsEntity.Albumarturl: string
<summary> character varying(1024)</summary>
<summary> character varying(1024)</summary>
val caption : string
val t : string
property FSharp.Data.Sql.SqlDataProvider<...>.dataContext.public.albumdetailsEntity.Genre: string
<summary> character varying(120)</summary>
<summary> character varying(120)</summary>
property FSharp.Data.Sql.SqlDataProvider<...>.dataContext.public.albumdetailsEntity.Artist: string
<summary> character varying(120)</summary>
<summary> character varying(120)</summary>
property FSharp.Data.Sql.SqlDataProvider<...>.dataContext.public.albumdetailsEntity.Price: decimal
<summary> numeric</summary>
<summary> numeric</summary>
System.Decimal.ToString() : string
System.Decimal.ToString(provider: System.IFormatProvider) : string
System.Decimal.ToString(format: string) : string
System.Decimal.ToString(format: string, provider: System.IFormatProvider) : string
System.Decimal.ToString(provider: System.IFormatProvider) : string
System.Decimal.ToString(format: string) : string
System.Decimal.ToString(format: string, provider: System.IFormatProvider) : string
val truncate : k:int -> s:string -> string
Full name: SuaveMusicStore.View.truncate
Full name: SuaveMusicStore.View.truncate
val k : int
property System.String.Length: int
System.String.Substring(startIndex: int) : string
System.String.Substring(startIndex: int, length: int) : string
System.String.Substring(startIndex: int, length: int) : string
val manage : albums:Db.AlbumDetails list -> Node list
Full name: SuaveMusicStore.View.manage
Full name: SuaveMusicStore.View.manage
val albums : Db.AlbumDetails list
module Admin
from SuaveMusicStore.Path
from SuaveMusicStore.Path
val editAlbum : Path.IntPath
Full name: SuaveMusicStore.Path.Admin.editAlbum
Full name: SuaveMusicStore.Path.Admin.editAlbum
property FSharp.Data.Sql.SqlDataProvider<...>.dataContext.public.albumdetailsEntity.Albumid: int
<summary> integer</summary>
<summary> integer</summary>
val deleteAlbum : Path.IntPath
Full name: SuaveMusicStore.Path.Admin.deleteAlbum
Full name: SuaveMusicStore.Path.Admin.deleteAlbum
val deleteAlbum : albumTitle:string -> Node list
Full name: SuaveMusicStore.View.deleteAlbum
Full name: SuaveMusicStore.View.deleteAlbum
val albumTitle : string
val br : attr:Attribute list -> Node
Full name: Suave.Html.br
Full name: Suave.Html.br
val createAlbum : genres:(decimal * string) list -> artists:(decimal * string) list -> Node list
Full name: SuaveMusicStore.View.createAlbum
Full name: SuaveMusicStore.View.createAlbum
val genres : (decimal * string) list
val artists : (decimal * string) list
val album : Form<Form.Album>
Full name: SuaveMusicStore.Form.album
Full name: SuaveMusicStore.Form.album
type HtmlAttribute = string * string
Full name: Suave.Form.HtmlAttribute
Full name: Suave.Form.HtmlAttribute
val selectInput : quotF:('a -> Quotations.Expr<'b>) -> options:('b * string) list -> selected:'b option -> form:Form<'a> -> Node (requires equality)
Full name: Suave.Form.selectInput
Full name: Suave.Form.selectInput
val f : Form.Album
Form.Album.GenreId: decimal
union case Option.None: Option<'T>
Form.Album.ArtistId: decimal
Form.Album.Title: string
Form.Album.Price: decimal
Form.Album.ArtUrl: string
val editAlbum : album:Db.Album -> genres:(decimal * string) list -> artists:(decimal * string) list -> Node list
Full name: SuaveMusicStore.View.editAlbum
Full name: SuaveMusicStore.View.editAlbum
union case Option.Some: Value: 'T -> Option<'T>
property FSharp.Data.Sql.SqlDataProvider<...>.dataContext.public.albumsEntity.Genreid: int
<summary> integer</summary>
<summary> integer</summary>
property FSharp.Data.Sql.SqlDataProvider<...>.dataContext.public.albumsEntity.Artistid: int
<summary> integer</summary>
<summary> integer</summary>
val formatDec : d:System.Decimal -> string
Full name: Suave.Form.formatDec
Full name: Suave.Form.formatDec
property FSharp.Data.Sql.SqlDataProvider<...>.dataContext.public.albumsEntity.Price: decimal
<summary> numeric</summary>
<summary> numeric</summary>
val logon : Node list
Full name: SuaveMusicStore.View.logon
Full name: SuaveMusicStore.View.logon
val logon : Form<Form.Logon>
Full name: SuaveMusicStore.Form.logon
Full name: SuaveMusicStore.Form.logon
val f : Form.Logon
Form.Logon.Username: string
Form.Logon.Password: Password
val notFound : Node list
Full name: SuaveMusicStore.View.notFound
Full name: SuaveMusicStore.View.notFound
val partNav : Node
Full name: SuaveMusicStore.View.partNav
Full name: SuaveMusicStore.View.partNav
val partUser : user:string option -> Node
Full name: SuaveMusicStore.View.partUser
Full name: SuaveMusicStore.View.partUser
val user : string option
Multiple items
val option : value:string -> txt:string -> selected:bool -> Node
Full name: Suave.Form.option
--------------------
type 'T option = Option<'T>
Full name: Microsoft.FSharp.Core.option<_>
val option : value:string -> txt:string -> selected:bool -> Node
Full name: Suave.Form.option
--------------------
type 'T option = Option<'T>
Full name: Microsoft.FSharp.Core.option<_>
val user : string
val index : container:Node list -> string
Full name: SuaveMusicStore.View.index
Full name: SuaveMusicStore.View.index
val container : Node list
val html : (Attribute list -> Node list -> Node)
Full name: Suave.Html.html
Full name: Suave.Html.html
val head : (Attribute list -> Node list -> Node)
Full name: Suave.Html.head
Full name: Suave.Html.head
val title : attr:Attribute list -> s:string -> Node
Full name: Suave.Html.title
Full name: Suave.Html.title
val body : (Attribute list -> Node list -> Node)
Full name: Suave.Html.body
Full name: Suave.Html.body
val htmlToString : node:Node -> string
Full name: Suave.Html.htmlToString
Full name: Suave.Html.htmlToString
module App
from SuaveMusicStore
from SuaveMusicStore
module Filters
from Suave
from Suave
module Model
from Suave
from Suave
module Binding
from Suave.Model
from Suave.Model
module Operators
from Suave
from Suave
module RequestErrors
from Suave
from Suave
module Successful
from Suave
from Suave
module Web
from Suave
from Suave
val html : container:Html.Node list -> WebPart
Full name: SuaveMusicStore.App.html
Full name: SuaveMusicStore.App.html
val container : Html.Node list
val OK : body:string -> WebPart
Full name: Suave.Successful.OK
Full name: Suave.Successful.OK
module View
from SuaveMusicStore
from SuaveMusicStore
val index : container:Html.Node list -> string
Full name: SuaveMusicStore.View.index
Full name: SuaveMusicStore.View.index
val browse : (HttpContext -> Async<HttpContext option>)
Full name: SuaveMusicStore.App.browse
Full name: SuaveMusicStore.App.browse
val request : apply:(HttpRequest -> HttpContext -> 'a) -> context:HttpContext -> 'a
Full name: Suave.Http.request
Full name: Suave.Http.request
val r : HttpRequest
member HttpRequest.queryParam : key:string -> Choice<string,string>
union case Choice.Choice1Of2: 'T1 -> Choice<'T1,'T2>
val getContext : unit -> FSharp.Data.Sql.SqlDataProvider<...>.dataContext
Full name: SuaveMusicStore.Db.getContext
Full name: SuaveMusicStore.Db.getContext
val getAlbumsForGenre : genreName:string -> ctx:Db.DbContext -> Db.Album list
Full name: SuaveMusicStore.Db.getAlbumsForGenre
Full name: SuaveMusicStore.Db.getAlbumsForGenre
val browse : genre:string -> albums:Db.Album list -> Html.Node list
Full name: SuaveMusicStore.View.browse
Full name: SuaveMusicStore.View.browse
union case Choice.Choice2Of2: 'T2 -> Choice<'T1,'T2>
val msg : string
val BAD_REQUEST : body:string -> WebPart
Full name: Suave.RequestErrors.BAD_REQUEST
Full name: Suave.RequestErrors.BAD_REQUEST
val overview : (HttpContext -> Async<HttpContext option>)
Full name: SuaveMusicStore.App.overview
Full name: SuaveMusicStore.App.overview
val warbler : f:('t -> 't -> 'u) -> 't -> 'u
Full name: Suave.WebPart.warbler
Full name: Suave.WebPart.warbler
val getGenres : ctx:Db.DbContext -> Db.Genre list
Full name: SuaveMusicStore.Db.getGenres
Full name: SuaveMusicStore.Db.getGenres
val map : mapping:('T -> 'U) -> list:'T list -> 'U list
Full name: Microsoft.FSharp.Collections.List.map
Full name: Microsoft.FSharp.Collections.List.map
val g : Db.Genre
property FSharp.Data.Sql.SqlDataProvider<...>.dataContext.public.genresEntity.Name: string
<summary> character varying(120)</summary>
<summary> character varying(120)</summary>
val store : genres:string list -> Html.Node list
Full name: SuaveMusicStore.View.store
Full name: SuaveMusicStore.View.store
val details : id:int -> WebPart
Full name: SuaveMusicStore.App.details
Full name: SuaveMusicStore.App.details
val getAlbumDetails : id:int -> ctx:Db.DbContext -> Db.AlbumDetails option
Full name: SuaveMusicStore.Db.getAlbumDetails
Full name: SuaveMusicStore.Db.getAlbumDetails
val details : album:Db.AlbumDetails -> Html.Node list
Full name: SuaveMusicStore.View.details
Full name: SuaveMusicStore.View.details
val never : WebPart<'a>
Full name: Suave.WebPart.never
Full name: Suave.WebPart.never
val manage : (HttpContext -> Async<HttpContext option>)
Full name: SuaveMusicStore.App.manage
Full name: SuaveMusicStore.App.manage
val getAlbumsDetails : ctx:Db.DbContext -> Db.AlbumDetails list
Full name: SuaveMusicStore.Db.getAlbumsDetails
Full name: SuaveMusicStore.Db.getAlbumsDetails
val manage : albums:Db.AlbumDetails list -> Html.Node list
Full name: SuaveMusicStore.View.manage
Full name: SuaveMusicStore.View.manage
val bindToForm : form:Form<'a> -> handler:('a -> HttpContext -> Async<HttpContext option>) -> (HttpContext -> Async<HttpContext option>)
Full name: SuaveMusicStore.App.bindToForm
Full name: SuaveMusicStore.App.bindToForm
val form : Form<'a>
val handler : ('a -> HttpContext -> Async<HttpContext option>)
val bindReq : f:(HttpRequest -> Choice<'b,'c>) -> fCont:('b -> HttpContext -> 'd) -> fErr:('c -> HttpContext -> 'd) -> (HttpContext -> 'd)
Full name: Suave.Model.Binding.bindReq
Full name: Suave.Model.Binding.bindReq
val bindForm : form:Form<'a> -> req:HttpRequest -> Choice<'a,string>
Full name: Suave.Form.bindForm
Full name: Suave.Form.bindForm
val createAlbum : WebPart<HttpContext>
Full name: SuaveMusicStore.App.createAlbum
Full name: SuaveMusicStore.App.createAlbum
val ctx : FSharp.Data.Sql.SqlDataProvider<...>.dataContext
val choose : options:WebPart<'a> list -> WebPart<'a>
Full name: Suave.WebPart.choose
Full name: Suave.WebPart.choose
val GET : WebPart
Full name: Suave.Filters.GET
Full name: Suave.Filters.GET
property FSharp.Data.Sql.SqlDataProvider<...>.dataContext.public.genresEntity.Genreid: int
<summary> integer</summary>
<summary> integer</summary>
val getArtists : ctx:Db.DbContext -> Db.Artist list
Full name: SuaveMusicStore.Db.getArtists
Full name: SuaveMusicStore.Db.getArtists
val g : Db.Artist
property FSharp.Data.Sql.SqlDataProvider<...>.dataContext.public.artistsEntity.Artistid: int
<summary> integer</summary>
<summary> integer</summary>
property FSharp.Data.Sql.SqlDataProvider<...>.dataContext.public.artistsEntity.Name: string
<summary> character varying(120)</summary>
<summary> character varying(120)</summary>
val createAlbum : genres:(decimal * string) list -> artists:(decimal * string) list -> Html.Node list
Full name: SuaveMusicStore.View.createAlbum
Full name: SuaveMusicStore.View.createAlbum
val POST : WebPart
Full name: Suave.Filters.POST
Full name: Suave.Filters.POST
Multiple items
union case Form.Form: FormProp<'a> list * ServerSideValidation<'a> list -> Form<'a>
--------------------
module Form
from Suave
--------------------
module Form
from SuaveMusicStore
--------------------
type Form<'a> = | Form of FormProp<'a> list * ServerSideValidation<'a> list
Full name: Suave.Form.Form<_>
union case Form.Form: FormProp<'a> list * ServerSideValidation<'a> list -> Form<'a>
--------------------
module Form
from Suave
--------------------
module Form
from SuaveMusicStore
--------------------
type Form<'a> = | Form of FormProp<'a> list * ServerSideValidation<'a> list
Full name: Suave.Form.Form<_>
val form : Form.Album
val createAlbum : artistId:int * genreId:int * price:decimal * title:string -> ctx:Db.DbContext -> Unit
Full name: SuaveMusicStore.Db.createAlbum
Full name: SuaveMusicStore.Db.createAlbum
module Redirection
from Suave
from Suave
val FOUND : location:string -> WebPart
Full name: Suave.Redirection.FOUND
Full name: Suave.Redirection.FOUND
val editAlbum : id:int -> WebPart<HttpContext>
Full name: SuaveMusicStore.App.editAlbum
Full name: SuaveMusicStore.App.editAlbum
val getAlbum : id:int -> ctx:Db.DbContext -> Db.Album option
Full name: SuaveMusicStore.Db.getAlbum
Full name: SuaveMusicStore.Db.getAlbum
val editAlbum : album:Db.Album -> genres:(decimal * string) list -> artists:(decimal * string) list -> Html.Node list
Full name: SuaveMusicStore.View.editAlbum
Full name: SuaveMusicStore.View.editAlbum
val updateAlbum : album:Db.Album -> artistId:int * genreId:int * price:decimal * title:string -> ctx:Db.DbContext -> Unit
Full name: SuaveMusicStore.Db.updateAlbum
Full name: SuaveMusicStore.Db.updateAlbum
val deleteAlbum : id:int -> WebPart<HttpContext>
Full name: SuaveMusicStore.App.deleteAlbum
Full name: SuaveMusicStore.App.deleteAlbum
val deleteAlbum : albumTitle:string -> Html.Node list
Full name: SuaveMusicStore.View.deleteAlbum
Full name: SuaveMusicStore.View.deleteAlbum
val deleteAlbum : album:Db.Album -> ctx:Db.DbContext -> Unit
Full name: SuaveMusicStore.Db.deleteAlbum
Full name: SuaveMusicStore.Db.deleteAlbum
val logon : WebPart
Full name: SuaveMusicStore.App.logon
Full name: SuaveMusicStore.App.logon
val logon : Html.Node list
Full name: SuaveMusicStore.View.logon
Full name: SuaveMusicStore.View.logon
val webPart : WebPart<HttpContext>
Full name: SuaveMusicStore.App.webPart
Full name: SuaveMusicStore.App.webPart
val path : pathAfterDomain:string -> WebPart
Full name: Suave.Filters.path
Full name: Suave.Filters.path
val home : Html.Node list
Full name: SuaveMusicStore.View.home
Full name: SuaveMusicStore.View.home
val pathScan : pf:PrintfFormat<'a,'b,'c,'d,'t> -> h:('t -> WebPart) -> WebPart
Full name: Suave.Filters.pathScan
Full name: Suave.Filters.pathScan
val pathRegex : pathAfterDomainRegex:string -> WebPart
Full name: Suave.Filters.pathRegex
Full name: Suave.Filters.pathRegex
module Files
from Suave
from Suave
val browseHome : WebPart
Full name: Suave.Files.browseHome
Full name: Suave.Files.browseHome
val notFound : Html.Node list
Full name: SuaveMusicStore.View.notFound
Full name: SuaveMusicStore.View.notFound
val startWebServer : config:SuaveConfig -> webpart:WebPart -> unit
Full name: Suave.Web.startWebServer
Full name: Suave.Web.startWebServer
val defaultConfig : SuaveConfig
Full name: Suave.Web.defaultConfig
Full name: Suave.Web.defaultConfig
Show code from this section on GitHub