Skip to content

Commit e6a0c1f

Browse files
committed
Add condition enum
1 parent c6398f6 commit e6a0c1f

File tree

30 files changed

+269
-51
lines changed

30 files changed

+269
-51
lines changed

templates/android/library/src/main/java/io/package/Operator.kt.twig

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,18 @@ package {{ sdk.namespace | caseDot }}
22

33
import {{ sdk.namespace | caseDot }}.extensions.toJson
44

5+
enum class Condition(val value: String) {
6+
EQUAL("equal"),
7+
NOT_EQUAL("notEqual"),
8+
GREATER_THAN("greaterThan"),
9+
GREATER_THAN_EQUAL("greaterThanEqual"),
10+
LESS_THAN("lessThan"),
11+
LESS_THAN_EQUAL("lessThanEqual"),
12+
CONTAINS("contains");
13+
14+
override fun toString() = value
15+
}
16+
517
class Operator(
618
val method: String,
719
val values: List<Any>? = null,
@@ -71,8 +83,8 @@ class Operator(
7183
return Operator("arrayDiff", values).toJson()
7284
}
7385

74-
fun arrayFilter(condition: String, value: Any? = null): String {
75-
val values = mutableListOf<Any>(condition)
86+
fun arrayFilter(condition: Condition, value: Any? = null): String {
87+
val values = mutableListOf<Any>(condition.value)
7688
value?.let { values.add(it) }
7789
return Operator("arrayFilter", values).toJson()
7890
}

templates/dart/lib/operator.dart.twig

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,22 @@
11
part of '{{ language.params.packageName }}.dart';
22

3+
/// Filter condition for array operations
4+
enum Condition {
5+
equal('equal'),
6+
notEqual('notEqual'),
7+
greaterThan('greaterThan'),
8+
greaterThanEqual('greaterThanEqual'),
9+
lessThan('lessThan'),
10+
lessThanEqual('lessThanEqual'),
11+
contains('contains');
12+
13+
final String value;
14+
const Condition(this.value);
15+
16+
@override
17+
String toString() => value;
18+
}
19+
320
/// Helper class to generate operator strings for atomic operations.
421
class Operator {
522
final String method;
@@ -100,8 +117,8 @@ class Operator {
100117
Operator._('arrayDiff', values).toString();
101118

102119
/// Filter array values based on a condition.
103-
static String arrayFilter(String condition, [dynamic value]) {
104-
final values = <dynamic>[condition];
120+
static String arrayFilter(Condition condition, [dynamic value]) {
121+
final values = <dynamic>[condition.value];
105122
if (value != null) {
106123
values.add(value);
107124
}

templates/dart/test/operator_test.dart.twig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,9 @@ void main() {
117117
});
118118

119119
test('returns arrayFilter', () {
120-
final op = jsonDecode(Operator.arrayFilter('equals', 'test'));
120+
final op = jsonDecode(Operator.arrayFilter(Condition.equal, 'test'));
121121
expect(op['method'], 'arrayFilter');
122-
expect(op['values'], ['equals', 'test']);
122+
expect(op['values'], ['equal', 'test']);
123123
});
124124

125125
test('returns concat', () {

templates/deno/src/operator.ts.twig

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,16 @@ type OperatorValuesSingle = string | number | boolean;
22
export type OperatorValuesList = string[] | number[] | boolean[] | any[];
33
export type OperatorValues = OperatorValuesSingle | OperatorValuesList;
44

5+
export enum Condition {
6+
Equal = "equal",
7+
NotEqual = "notEqual",
8+
GreaterThan = "greaterThan",
9+
GreaterThanEqual = "greaterThanEqual",
10+
LessThan = "lessThan",
11+
LessThanEqual = "lessThanEqual",
12+
Contains = "contains",
13+
}
14+
515
/**
616
* Helper class to generate operator strings for atomic operations.
717
*/
@@ -192,12 +202,17 @@ export class Operator {
192202
/**
193203
* Filter array values based on a condition.
194204
*
195-
* @param {string} condition
205+
* @param {Condition} condition
196206
* @param {any} value
197207
* @returns {string}
198208
*/
199-
static arrayFilter = (condition: string, value?: any): string =>
200-
new Operator("arrayFilter", [condition, value]).toString();
209+
static arrayFilter = (condition: Condition, value?: any): string => {
210+
const values: any[] = [condition];
211+
if (value !== undefined) {
212+
values.push(value);
213+
}
214+
return new Operator("arrayFilter", values).toString();
215+
};
201216

202217
/**
203218
* Concatenate a value to a string or array attribute.

templates/deno/test/operator.test.ts.twig

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {describe, it as test} from "https://deno.land/std@0.149.0/testing/bdd.ts";
22
import {assertEquals} from "https://deno.land/std@0.204.0/assert/assert_equals.ts";
3-
import {Operator} from "../src/operator.ts";
3+
import {Operator, Condition} from "../src/operator.ts";
44

55
describe('Operator', () => {
66
test('increment', () => assertEquals(
@@ -94,8 +94,8 @@ describe('Operator', () => {
9494
));
9595

9696
test('arrayFilter', () => assertEquals(
97-
Operator.arrayFilter('equals', 'test').toString(),
98-
'{"method":"arrayFilter","values":["equals","test"]}',
97+
Operator.arrayFilter(Condition.Equal, 'test').toString(),
98+
'{"method":"arrayFilter","values":["equal","test"]}',
9999
));
100100

101101
test('concat', () => assertEquals(

templates/dotnet/Package/Operator.cs.twig

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,47 @@
11
using System.Collections;
22
using System.Collections.Generic;
3+
using System.Runtime.Serialization;
34
using System.Text.Json;
45
using System.Text.Json.Serialization;
56

67
namespace {{ spec.title | caseUcfirst }}
78
{
9+
public enum Condition
10+
{
11+
[EnumMember(Value = "equal")]
12+
Equal,
13+
[EnumMember(Value = "notEqual")]
14+
NotEqual,
15+
[EnumMember(Value = "greaterThan")]
16+
GreaterThan,
17+
[EnumMember(Value = "greaterThanEqual")]
18+
GreaterThanEqual,
19+
[EnumMember(Value = "lessThan")]
20+
LessThan,
21+
[EnumMember(Value = "lessThanEqual")]
22+
LessThanEqual,
23+
[EnumMember(Value = "contains")]
24+
Contains
25+
}
26+
27+
public static class ConditionExtensions
28+
{
29+
public static string ToValue(this Condition condition)
30+
{
31+
return condition switch
32+
{
33+
Condition.Equal => "equal",
34+
Condition.NotEqual => "notEqual",
35+
Condition.GreaterThan => "greaterThan",
36+
Condition.GreaterThanEqual => "greaterThanEqual",
37+
Condition.LessThan => "lessThan",
38+
Condition.LessThanEqual => "lessThanEqual",
39+
Condition.Contains => "contains",
40+
_ => throw new ArgumentOutOfRangeException(nameof(condition), condition, null)
41+
};
42+
}
43+
}
44+
845
public class Operator
946
{
1047
[JsonPropertyName("method")]
@@ -130,9 +167,14 @@ namespace {{ spec.title | caseUcfirst }}
130167
return new Operator("arrayDiff", values).ToString();
131168
}
132169

133-
public static string ArrayFilter(string condition, object? value = null)
170+
public static string ArrayFilter(Condition condition, object? value = null)
134171
{
135-
return new Operator("arrayFilter", new List<object> { condition, value! }).ToString();
172+
var values = new List<object> { condition.ToValue() };
173+
if (value != null)
174+
{
175+
values.Add(value);
176+
}
177+
return new Operator("arrayFilter", values).ToString();
136178
}
137179

138180
public static string Concat(object value)

templates/go/operator.go.twig

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,18 @@ import (
44
"encoding/json"
55
)
66

7+
type Condition string
8+
9+
const (
10+
ConditionEqual Condition = "equal"
11+
ConditionNotEqual Condition = "notEqual"
12+
ConditionGreaterThan Condition = "greaterThan"
13+
ConditionGreaterThanEqual Condition = "greaterThanEqual"
14+
ConditionLessThan Condition = "lessThan"
15+
ConditionLessThanEqual Condition = "lessThanEqual"
16+
ConditionContains Condition = "contains"
17+
)
18+
719
func toArray(val interface{}) []interface{} {
820
switch v := val.(type) {
921
case nil:
@@ -152,8 +164,11 @@ func ArrayDiff(values []interface{}) string {
152164
})
153165
}
154166

155-
func ArrayFilter(condition string, value interface{}) string {
156-
values := []interface{}{condition, value}
167+
func ArrayFilter(condition Condition, value ...interface{}) string {
168+
values := []interface{}{string(condition)}
169+
if len(value) > 0 && value[0] != nil {
170+
values = append(values, value[0])
171+
}
157172
return parseOperator(operatorOptions{
158173
Method: "arrayFilter",
159174
Values: &values,

templates/kotlin/src/main/kotlin/io/appwrite/Operator.kt.twig

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,18 @@ package {{ sdk.namespace | caseDot }}
22

33
import {{ sdk.namespace | caseDot }}.extensions.toJson
44

5+
enum class Condition(val value: String) {
6+
EQUAL("equal"),
7+
NOT_EQUAL("notEqual"),
8+
GREATER_THAN("greaterThan"),
9+
GREATER_THAN_EQUAL("greaterThanEqual"),
10+
LESS_THAN("lessThan"),
11+
LESS_THAN_EQUAL("lessThanEqual"),
12+
CONTAINS("contains");
13+
14+
override fun toString() = value
15+
}
16+
517
class Operator(
618
val method: String,
719
val values: List<Any>? = null,
@@ -71,8 +83,8 @@ class Operator(
7183
return Operator("arrayDiff", values).toJson()
7284
}
7385

74-
fun arrayFilter(condition: String, value: Any? = null): String {
75-
val values = mutableListOf<Any>(condition)
86+
fun arrayFilter(condition: Condition, value: Any? = null): String {
87+
val values = mutableListOf<Any>(condition.value)
7688
value?.let { values.add(it) }
7789
return Operator("arrayFilter", values).toJson()
7890
}

templates/node/src/operator.ts.twig

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,16 @@ type OperatorValuesSingle = string | number | boolean;
22
export type OperatorValuesList = string[] | number[] | boolean[] | any[];
33
export type OperatorValues = OperatorValuesSingle | OperatorValuesList;
44

5+
export enum Condition {
6+
Equal = "equal",
7+
NotEqual = "notEqual",
8+
GreaterThan = "greaterThan",
9+
GreaterThanEqual = "greaterThanEqual",
10+
LessThan = "lessThan",
11+
LessThanEqual = "lessThanEqual",
12+
Contains = "contains",
13+
}
14+
515
/**
616
* Helper class to generate operator strings for atomic operations.
717
*/
@@ -192,12 +202,17 @@ export class Operator {
192202
/**
193203
* Filter array values based on a condition.
194204
*
195-
* @param {string} condition
205+
* @param {Condition} condition
196206
* @param {any} value
197207
* @returns {string}
198208
*/
199-
static arrayFilter = (condition: string, value?: any): string =>
200-
new Operator("arrayFilter", [condition, value]).toString();
209+
static arrayFilter = (condition: Condition, value?: any): string => {
210+
const values: any[] = [condition];
211+
if (value !== undefined) {
212+
values.push(value);
213+
}
214+
return new Operator("arrayFilter", values).toString();
215+
};
201216

202217
/**
203218
* Concatenate a value to a string or array attribute.

templates/php/src/Operator.php.twig

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,17 @@
22
33
namespace {{ spec.title | caseUcfirst }};
44
5+
enum Condition: string
6+
{
7+
case Equal = 'equal';
8+
case NotEqual = 'notEqual';
9+
case GreaterThan = 'greaterThan';
10+
case GreaterThanEqual = 'greaterThanEqual';
11+
case LessThan = 'lessThan';
12+
case LessThanEqual = 'lessThanEqual';
13+
case Contains = 'contains';
14+
}
15+
516
class Operator implements \JsonSerializable
617
{
718
protected string $method;
@@ -202,13 +213,17 @@ class Operator implements \JsonSerializable
202213
/**
203214
* Array Filter
204215
*
205-
* @param string $condition
216+
* @param Condition $condition
206217
* @param mixed $value
207218
* @return string
208219
*/
209-
public static function arrayFilter(string $condition, mixed $value = null): string
220+
public static function arrayFilter(Condition $condition, mixed $value = null): string
210221
{
211-
return (new Operator('arrayFilter', [$condition, $value]))->__toString();
222+
$values = [$condition->value];
223+
if ($value !== null) {
224+
$values[] = $value;
225+
}
226+
return (new Operator('arrayFilter', $values))->__toString();
212227
}
213228
214229
/**

0 commit comments

Comments
 (0)