Fix db CE call
- Add db/table/index drop, index rename/wait to CE - Add DU for index rename opt args
This commit is contained in:
parent
542e501617
commit
7b26b8b43c
@ -36,7 +36,8 @@ type RethinkBuilder<'T> () =
|
|||||||
|
|
||||||
/// Specify a database for further commands
|
/// Specify a database for further commands
|
||||||
[<CustomOperation "withDb">]
|
[<CustomOperation "withDb">]
|
||||||
member _.Db (r : RethinkDB, db : string) = match db with "" -> r.Db () | _ -> r.Db db
|
member _.Db (r : RethinkDB, db : string) =
|
||||||
|
match db with "" -> invalidArg db "db name cannot be blank" | _ -> r.Db db
|
||||||
|
|
||||||
/// Identify a table (of form "dbName.tableName"; if no db name, uses default database)
|
/// Identify a table (of form "dbName.tableName"; if no db name, uses default database)
|
||||||
[<CustomOperation "withTable">]
|
[<CustomOperation "withTable">]
|
||||||
@ -60,13 +61,18 @@ type RethinkBuilder<'T> () =
|
|||||||
[<CustomOperation "dbCreate">]
|
[<CustomOperation "dbCreate">]
|
||||||
member _.DbCreate (r : RethinkDB, db : string) = r.DbCreate db
|
member _.DbCreate (r : RethinkDB, db : string) = r.DbCreate db
|
||||||
|
|
||||||
|
/// Drop a database
|
||||||
|
[<CustomOperation "dbDrop">]
|
||||||
|
member _.DbDrop (r : RethinkDB, db : string) = r.DbDrop db
|
||||||
|
|
||||||
/// List all tables for the default database
|
/// List all tables for the default database
|
||||||
[<CustomOperation "tableList">]
|
[<CustomOperation "tableList">]
|
||||||
member _.TableList (r : RethinkDB) = r.TableList ()
|
member _.TableList (r : RethinkDB) = r.TableList ()
|
||||||
|
|
||||||
/// List all tables for the specified database
|
/// List all tables for the specified database
|
||||||
[<CustomOperation "tableList">]
|
[<CustomOperation "tableList">]
|
||||||
member this.TableList (r : RethinkDB, db : string) = this.Db(r, db).TableList ()
|
member this.TableList (r : RethinkDB, db : string) =
|
||||||
|
match db with "" -> this.TableList r | _ -> this.Db(r, db).TableList ()
|
||||||
|
|
||||||
/// Create a table (of form "dbName.tableName"; if no db name, uses default database)
|
/// Create a table (of form "dbName.tableName"; if no db name, uses default database)
|
||||||
[<CustomOperation "tableCreate">]
|
[<CustomOperation "tableCreate">]
|
||||||
@ -75,6 +81,13 @@ type RethinkBuilder<'T> () =
|
|||||||
| Some db, tbl -> this.Db(r, db).TableCreate tbl
|
| Some db, tbl -> this.Db(r, db).TableCreate tbl
|
||||||
| None, _ -> r.TableCreate table
|
| None, _ -> r.TableCreate table
|
||||||
|
|
||||||
|
/// Drop a table (of form "dbName.tableName"; if no db name, uses default database)
|
||||||
|
[<CustomOperation "tableDrop">]
|
||||||
|
member this.TableDrop (r : RethinkDB, table : string) =
|
||||||
|
match dbAndTable table with
|
||||||
|
| Some db, tbl -> this.Db(r, db).TableDrop tbl
|
||||||
|
| None, _ -> r.TableDrop table
|
||||||
|
|
||||||
/// List all indexes for a table
|
/// List all indexes for a table
|
||||||
[<CustomOperation "indexList">]
|
[<CustomOperation "indexList">]
|
||||||
member _.IndexList (tbl : Table) = tbl.IndexList ()
|
member _.IndexList (tbl : Table) = tbl.IndexList ()
|
||||||
@ -97,6 +110,35 @@ type RethinkBuilder<'T> () =
|
|||||||
member this.IndexCreate (tbl : Table, index : string, f : ReqlExpr -> obj, opts : IndexCreateOptArg list) =
|
member this.IndexCreate (tbl : Table, index : string, f : ReqlExpr -> obj, opts : IndexCreateOptArg list) =
|
||||||
this.IndexCreate (tbl, index, f) |> IndexCreateOptArg.apply opts
|
this.IndexCreate (tbl, index, f) |> IndexCreateOptArg.apply opts
|
||||||
|
|
||||||
|
/// Drop an index for a table
|
||||||
|
[<CustomOperation "indexDrop">]
|
||||||
|
member _.IndexDrop (tbl : Table, index : string) = tbl.IndexDrop index
|
||||||
|
|
||||||
|
/// Rename an index on a table
|
||||||
|
[<CustomOperation "indexRename">]
|
||||||
|
member _.IndexRename (tbl : Table, oldName : string, newName : string) = tbl.IndexRename (oldName, newName)
|
||||||
|
|
||||||
|
/// Rename an index on a table, specifying an overwrite option
|
||||||
|
[<CustomOperation "indexRename">]
|
||||||
|
member this.IndexRename (tbl : Table, oldName : string, newName : string, arg : IndexRenameOptArg) =
|
||||||
|
this.IndexRename(tbl, oldName, newName) |> IndexRenameOptArg.apply arg
|
||||||
|
|
||||||
|
/// Get the status of all indexes on a table
|
||||||
|
[<CustomOperation "indexStatus">]
|
||||||
|
member _.IndexStatus (tbl : Table) = tbl.IndexStatus ()
|
||||||
|
|
||||||
|
/// Get the status of specific indexes on a table
|
||||||
|
[<CustomOperation "indexStatus">]
|
||||||
|
member _.IndexStatus (tbl : Table, indexes : string list) = tbl.IndexStatus (Array.ofList indexes)
|
||||||
|
|
||||||
|
/// Wait for all indexes on a table to become ready
|
||||||
|
[<CustomOperation "indexWait">]
|
||||||
|
member _.IndexWait (tbl : Table) = tbl.IndexWait ()
|
||||||
|
|
||||||
|
/// Wait for specific indexes on a table to become ready
|
||||||
|
[<CustomOperation "indexWait">]
|
||||||
|
member _.IndexWait (tbl : Table, indexes : string list) = tbl.IndexWait (Array.ofList indexes)
|
||||||
|
|
||||||
// data retrieval / manipulation
|
// data retrieval / manipulation
|
||||||
|
|
||||||
/// Get a document from a table by its ID
|
/// Get a document from a table by its ID
|
||||||
@ -249,6 +291,10 @@ type RethinkBuilder<'T> () =
|
|||||||
member this.Delete (expr : ReqlExpr, opts : DeleteOptArg list) =
|
member this.Delete (expr : ReqlExpr, opts : DeleteOptArg list) =
|
||||||
this.Delete expr |> DeleteOptArg.apply opts
|
this.Delete expr |> DeleteOptArg.apply opts
|
||||||
|
|
||||||
|
/// Wait for updates to a table to be synchronized to disk
|
||||||
|
[<CustomOperation "sync">]
|
||||||
|
member _.Sync (tbl : Table) = tbl.Sync ()
|
||||||
|
|
||||||
// executing queries
|
// executing queries
|
||||||
|
|
||||||
/// Execute the query, returning the result of the type specified
|
/// Execute the query, returning the result of the type specified
|
||||||
|
@ -178,13 +178,29 @@ let indexDrop (indexName : string) (table : Table) =
|
|||||||
let indexList (table : Table) =
|
let indexList (table : Table) =
|
||||||
table.IndexList ()
|
table.IndexList ()
|
||||||
|
|
||||||
/// Rename an index (overwrite will fail)
|
/// Rename an index (will fail if new name already exists)
|
||||||
let indexRename (oldName : string) (newName : string) (table : Table) =
|
let indexRename (oldName : string) (newName : string) (table : Table) =
|
||||||
table.IndexRename (oldName, newName)
|
table.IndexRename (oldName, newName)
|
||||||
|
|
||||||
/// Rename an index (overwrite will succeed)
|
/// Rename an index (overwrite will succeed)
|
||||||
let indexRenameWithOverwrite (oldName : string) (newName : string) (table : Table) =
|
let indexRenameWithOverwrite (oldName : string) (newName : string) (table : Table) =
|
||||||
table.IndexRename(oldName, newName).OptArg ("overwrite", true)
|
indexRename oldName newName table |> IndexRenameOptArg.apply Overwrite
|
||||||
|
|
||||||
|
/// Get the status of specific indexes for the given table
|
||||||
|
let indexStatus (table : Table) (indexes : string list) =
|
||||||
|
table.IndexStatus (Array.ofList indexes)
|
||||||
|
|
||||||
|
/// Get the status of all indexes for the given table
|
||||||
|
let indexStatusAll (table : Table) =
|
||||||
|
table.IndexStatus ()
|
||||||
|
|
||||||
|
/// Wait for specific indexes on the given table to become ready
|
||||||
|
let indexWait (table : Table) (indexes : string list) =
|
||||||
|
table.IndexWait (Array.ofList indexes)
|
||||||
|
|
||||||
|
/// Wait for all indexes on the given table to become ready
|
||||||
|
let indexWaitAll (table : Table) =
|
||||||
|
table.IndexWait ()
|
||||||
|
|
||||||
/// Create an inner join between two sequences, specifying the join condition with a function
|
/// Create an inner join between two sequences, specifying the join condition with a function
|
||||||
let innerJoinFunc<'T> (otherSeq : obj) (f : ReqlExpr -> ReqlExpr -> 'T) (expr : ReqlExpr) =
|
let innerJoinFunc<'T> (otherSeq : obj) (f : ReqlExpr -> ReqlExpr -> 'T) (expr : ReqlExpr) =
|
||||||
|
@ -149,6 +149,20 @@ type Conflict =
|
|||||||
| Resolve f -> ReqlFunction3 f :> obj
|
| Resolve f -> ReqlFunction3 f :> obj
|
||||||
"conflict", value
|
"conflict", value
|
||||||
|
|
||||||
|
|
||||||
|
/// Optional arguments for the `indexRename` statement
|
||||||
|
type IndexRenameOptArg =
|
||||||
|
| FailIfExists
|
||||||
|
| Overwrite
|
||||||
|
|
||||||
|
/// Function to support `indexRename` optional argument
|
||||||
|
module IndexRenameOptArg =
|
||||||
|
|
||||||
|
/// Apply an optional argument to an indexRename statement
|
||||||
|
let apply opt (ir : IndexRename) =
|
||||||
|
ir.OptArg("overwrite", match opt with FailIfExists -> false | Overwrite -> true)
|
||||||
|
|
||||||
|
|
||||||
/// Optional arguments for the `insert` statement
|
/// Optional arguments for the `insert` statement
|
||||||
type InsertOptArg =
|
type InsertOptArg =
|
||||||
/// The durability of the command
|
/// The durability of the command
|
||||||
|
Loading…
Reference in New Issue
Block a user