gopkg.in/rethinkdb/rethinkdb-go.v6@v6.2.2/query_table.go (about) 1 package rethinkdb 2 3 import ( 4 p "gopkg.in/rethinkdb/rethinkdb-go.v6/ql2" 5 ) 6 7 // TableCreateOpts contains the optional arguments for the TableCreate term 8 type TableCreateOpts struct { 9 PrimaryKey interface{} `rethinkdb:"primary_key,omitempty"` 10 Durability interface{} `rethinkdb:"durability,omitempty"` 11 Shards interface{} `rethinkdb:"shards,omitempty"` 12 Replicas interface{} `rethinkdb:"replicas,omitempty"` 13 PrimaryReplicaTag interface{} `rethinkdb:"primary_replica_tag,omitempty"` 14 NonVotingReplicaTags interface{} `rethinkdb:"nonvoting_replica_tags,omitempty"` 15 } 16 17 func (o TableCreateOpts) toMap() map[string]interface{} { 18 return optArgsToMap(o) 19 } 20 21 // TableCreate creates a table. A RethinkDB table is a collection of JSON 22 // documents. 23 // 24 // Note: Only alphanumeric characters and underscores are valid for the table name. 25 func TableCreate(name interface{}, optArgs ...TableCreateOpts) Term { 26 opts := map[string]interface{}{} 27 if len(optArgs) >= 1 { 28 opts = optArgs[0].toMap() 29 } 30 return constructRootTerm("TableCreate", p.Term_TABLE_CREATE, []interface{}{name}, opts) 31 } 32 33 // TableCreate creates a table. A RethinkDB table is a collection of JSON 34 // documents. 35 // 36 // Note: Only alphanumeric characters and underscores are valid for the table name. 37 func (t Term) TableCreate(name interface{}, optArgs ...TableCreateOpts) Term { 38 opts := map[string]interface{}{} 39 if len(optArgs) >= 1 { 40 opts = optArgs[0].toMap() 41 } 42 return constructMethodTerm(t, "TableCreate", p.Term_TABLE_CREATE, []interface{}{name}, opts) 43 } 44 45 // TableDrop deletes a table. The table and all its data will be deleted. 46 func TableDrop(args ...interface{}) Term { 47 return constructRootTerm("TableDrop", p.Term_TABLE_DROP, args, map[string]interface{}{}) 48 } 49 50 // TableDrop deletes a table. The table and all its data will be deleted. 51 func (t Term) TableDrop(args ...interface{}) Term { 52 return constructMethodTerm(t, "TableDrop", p.Term_TABLE_DROP, args, map[string]interface{}{}) 53 } 54 55 // TableList lists all table names in a database. 56 func TableList(args ...interface{}) Term { 57 return constructRootTerm("TableList", p.Term_TABLE_LIST, args, map[string]interface{}{}) 58 } 59 60 // TableList lists all table names in a database. 61 func (t Term) TableList(args ...interface{}) Term { 62 return constructMethodTerm(t, "TableList", p.Term_TABLE_LIST, args, map[string]interface{}{}) 63 } 64 65 // IndexCreateOpts contains the optional arguments for the IndexCreate term 66 type IndexCreateOpts struct { 67 Multi interface{} `rethinkdb:"multi,omitempty"` 68 Geo interface{} `rethinkdb:"geo,omitempty"` 69 } 70 71 func (o IndexCreateOpts) toMap() map[string]interface{} { 72 return optArgsToMap(o) 73 } 74 75 // IndexCreate creates a new secondary index on a table. Secondary indexes 76 // improve the speed of many read queries at the slight cost of increased 77 // storage space and decreased write performance. 78 // 79 // IndexCreate supports the creation of the following types of indexes, to create 80 // indexes using arbitrary expressions use IndexCreateFunc. 81 // - Simple indexes based on the value of a single field. 82 // - Geospatial indexes based on indexes of geometry objects, created when the 83 // geo optional argument is true. 84 func (t Term) IndexCreate(name interface{}, optArgs ...IndexCreateOpts) Term { 85 opts := map[string]interface{}{} 86 if len(optArgs) >= 1 { 87 opts = optArgs[0].toMap() 88 } 89 return constructMethodTerm(t, "IndexCreate", p.Term_INDEX_CREATE, []interface{}{name}, opts) 90 } 91 92 // IndexCreateFunc creates a new secondary index on a table. Secondary indexes 93 // improve the speed of many read queries at the slight cost of increased 94 // storage space and decreased write performance. The function takes a index 95 // name and RQL term as the index value , the term can be an anonymous function 96 // or a binary representation obtained from the function field of indexStatus. 97 // 98 // It supports the creation of the following types of indexes. 99 // - Simple indexes based on the value of a single field where the index has a 100 // different name to the field. 101 // - Compound indexes based on multiple fields. 102 // - Multi indexes based on arrays of values, created when the multi optional argument is true. 103 func (t Term) IndexCreateFunc(name, indexFunction interface{}, optArgs ...IndexCreateOpts) Term { 104 opts := map[string]interface{}{} 105 if len(optArgs) >= 1 { 106 opts = optArgs[0].toMap() 107 } 108 return constructMethodTerm(t, "IndexCreate", p.Term_INDEX_CREATE, []interface{}{name, funcWrap(indexFunction)}, opts) 109 } 110 111 // IndexDrop deletes a previously created secondary index of a table. 112 func (t Term) IndexDrop(args ...interface{}) Term { 113 return constructMethodTerm(t, "IndexDrop", p.Term_INDEX_DROP, args, map[string]interface{}{}) 114 } 115 116 // IndexList lists all the secondary indexes of a table. 117 func (t Term) IndexList(args ...interface{}) Term { 118 return constructMethodTerm(t, "IndexList", p.Term_INDEX_LIST, args, map[string]interface{}{}) 119 } 120 121 // IndexRenameOpts contains the optional arguments for the IndexRename term 122 type IndexRenameOpts struct { 123 Overwrite interface{} `rethinkdb:"overwrite,omitempty"` 124 } 125 126 func (o IndexRenameOpts) toMap() map[string]interface{} { 127 return optArgsToMap(o) 128 } 129 130 // IndexRename renames an existing secondary index on a table. 131 func (t Term) IndexRename(oldName, newName interface{}, optArgs ...IndexRenameOpts) Term { 132 opts := map[string]interface{}{} 133 if len(optArgs) >= 1 { 134 opts = optArgs[0].toMap() 135 } 136 return constructMethodTerm(t, "IndexRename", p.Term_INDEX_RENAME, []interface{}{oldName, newName}, opts) 137 } 138 139 // IndexStatus gets the status of the specified indexes on this table, or the 140 // status of all indexes on this table if no indexes are specified. 141 func (t Term) IndexStatus(args ...interface{}) Term { 142 return constructMethodTerm(t, "IndexStatus", p.Term_INDEX_STATUS, args, map[string]interface{}{}) 143 } 144 145 // IndexWait waits for the specified indexes on this table to be ready, or for 146 // all indexes on this table to be ready if no indexes are specified. 147 func (t Term) IndexWait(args ...interface{}) Term { 148 return constructMethodTerm(t, "IndexWait", p.Term_INDEX_WAIT, args, map[string]interface{}{}) 149 } 150 151 // ChangesOpts contains the optional arguments for the Changes term 152 type ChangesOpts struct { 153 Squash interface{} `rethinkdb:"squash,omitempty"` 154 IncludeInitial interface{} `rethinkdb:"include_initial,omitempty"` 155 IncludeStates interface{} `rethinkdb:"include_states,omitempty"` 156 IncludeOffsets interface{} `rethinkdb:"include_offsets,omitempty"` 157 IncludeTypes interface{} `rethinkdb:"include_types,omitempty"` 158 ChangefeedQueueSize interface{} `rethinkdb:"changefeed_queue_size,omitempty"` 159 } 160 161 // ChangesOpts contains the optional arguments for the Changes term 162 func (o ChangesOpts) toMap() map[string]interface{} { 163 return optArgsToMap(o) 164 } 165 166 // Changes returns an infinite stream of objects representing changes to a query. 167 func (t Term) Changes(optArgs ...ChangesOpts) Term { 168 opts := map[string]interface{}{} 169 if len(optArgs) >= 1 { 170 opts = optArgs[0].toMap() 171 } 172 return constructMethodTerm(t, "Changes", p.Term_CHANGES, []interface{}{}, opts) 173 }