summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2018-06-06 15:54:18 +0200
committernsensfel <SpamShield0@noot-noot.org>2018-06-06 15:54:18 +0200
commitee9c2ac044cc77b80f30420c8f0788cad4281084 (patch)
tree6ce9c45b6c0f0c556839b6f462f84eab06e26594 /src/shared/struct/sh_db_query.erl
parent97f7511e61cebae3676a83aa9c0dc2efb15d8d8c (diff)
Figuring out how to organize the src folder(s)...
Diffstat (limited to 'src/shared/struct/sh_db_query.erl')
-rw-r--r--src/shared/struct/sh_db_query.erl59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/shared/struct/sh_db_query.erl b/src/shared/struct/sh_db_query.erl
new file mode 100644
index 0000000..998568e
--- /dev/null
+++ b/src/shared/struct/sh_db_query.erl
@@ -0,0 +1,59 @@
+-module(sh_db_query).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-include("../include/db_query.hrl").
+
+-opaque op() :: db_query_op().
+-opaque type() :: db_query().
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-export_type([type/0, op/0]).
+
+-export
+(
+ [
+ new/4,
+ set_field/2,
+ add_to_field/2,
+ update_indexed/3
+ ]
+).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-spec new (atom(), any(), sh_db_user:user(), list(op())) -> type().
+new (DBName, ObjectID, User, Ops) ->
+ #db_query
+ {
+ db = DBName,
+ id = ObjectID,
+ user = User,
+ ops = Ops
+ }.
+
+-spec set_field (non_neg_integer(), any()) -> op().
+set_field (Field, Value) ->
+ #set_field { field = Field, value = Value }.
+
+-spec add_to_field (non_neg_integer(), list(any())) -> op().
+add_to_field (Field, Values) ->
+ #add_to_field { field = Field, values = Values }.
+
+-spec update_indexed
+ (
+ non_neg_integer(),
+ non_neg_integer(),
+ list(op())
+ )
+ -> op().
+update_indexed (Field, IX, Updates) ->
+ #update_indexed { field = Field, ix = IX, ops = Updates}.