Skip to content

Commit

Permalink
Removed multiple operators 🚖
Browse files Browse the repository at this point in the history
  • Loading branch information
Sibyx committed Jul 20, 2021
1 parent b1cc735 commit 3a9d231
Show file tree
Hide file tree
Showing 6 changed files with 290 additions and 51 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Changelog

## 0.9.1 : 2021-07-20

- **Fix**: Fixed problem with multiple properites in operations (I had to remove comparison property check)

## 0.9.0 : 2021-06-25

- **Fix**: Fixed nested conditions (`Operator` can contain another `Operator`)
Expand Down
10 changes: 0 additions & 10 deletions duckql/structures/comparision.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
from enum import Enum
from typing import List

from pydantic import validator

try:
from typing import Literal
except ImportError:
from typing_extensions import Literal

from duckql.exceptions import ParseError
from duckql.base import BaseType
from duckql.properties.array import Array

Expand Down Expand Up @@ -59,13 +56,6 @@ def containers(cls) -> List["Comparision.Operation"]:
properties: List[BaseType]
operation: Operation

@validator('properties', pre=True)
def check_number_of_properties(cls, v):
if len(v) != 2:
raise ParseError("Comparison requires exactly two attributes!")

return v

def to_sql(self) -> str:
sql = f"{self.properties[0]} {self.operation}"

Expand Down
2 changes: 1 addition & 1 deletion duckql/version.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = '0.9.0'
__version__ = '0.9.1'
231 changes: 231 additions & 0 deletions examples/tripple_or_condition.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,231 @@
{
"obj": "structures.Query",
"entity": "donations",
"properties": [
{
"obj": "properties.Property",
"name": "donations.periodicity",
"alias": "donations__periodicity"
},
{
"obj": "properties.Property",
"name": "donations.id",
"alias": "donations__id"
},
{
"obj": "properties.Property",
"name": "campaigns__organisations__fk.id",
"alias": "organisations__id"
},
{
"obj": "properties.Property",
"name": "campaigns__organisations__fk.name",
"alias": "organisations__name"
},
{
"obj": "properties.Property",
"name": "donations__campaigns__fk.note",
"alias": "campaigns__note"
},
{
"obj": "properties.Property",
"name": "donations__donors__fk.name",
"alias": "donors__name"
},
{
"obj": "properties.Property",
"name": "donations__donors__fk.surname",
"alias": "donors__surname"
},
{
"obj": "properties.Property",
"name": "donations__payments__fk.value",
"alias": "payments__value"
},
{
"obj": "properties.Property",
"name": "donations__payments__fk.happened_at",
"alias": "payments__happened_at"
},
{
"obj": "properties.Property",
"name": "donations__payments__fk.status",
"alias": "payments__status"
},
{
"obj": "properties.Property",
"name": "donations__payments__fk.variable_symbol",
"alias": "payments__variable_symbol"
}
],
"conditions": {
"obj": "structures.Operator",
"operation": "and",
"properties": [
{
"obj": "structures.Comparision",
"properties": [
{
"obj": "properties.Property",
"name": "donations__payments__fk.status"
},
{
"obj": "properties.Array",
"values": [
{
"obj": "properties.Constant",
"value": "successful"
}
]
}
],
"operation": "in"
},
{
"obj": "structures.Operator",
"operation": "or",
"properties": [
{
"obj": "structures.Comparision",
"properties": [
{
"obj": "properties.Property",
"name": "donations__payments__fk.value"
},
{
"obj": "properties.Constant",
"value": 0.01
}
],
"operation": "eq"
},
{
"obj": "structures.Comparision",
"properties": [
{
"obj": "properties.Property",
"name": "donations__payments__fk.value"
},
{
"obj": "properties.Constant",
"value": 1
}
],
"operation": "eq"
},
{
"obj": "structures.Comparision",
"properties": [
{
"obj": "properties.Property",
"name": "donations__payments__fk.value"
},
{
"obj": "properties.Constant",
"value": 5
}
],
"operation": "eq"
}
]
}
]
},
"order": [
{
"obj": "structures.Order",
"property": {
"obj": "properties.Property",
"name": "payments__value"
},
"kind": "ASC"
}
],
"limit": {
"obj": "structures.Limit",
"limit": 10,
"offset": 0
},
"joins": [
{
"obj": "structures.Join",
"entity": "donors",
"type": "left",
"on": {
"obj": "structures.Comparision",
"properties": [
{
"obj": "properties.Property",
"name": "donations__donors__fk.id"
},
{
"obj": "properties.Property",
"name": "donations.donor_id"
}
],
"operation": "eq"
},
"alias": "donations__donors__fk"
},
{
"obj": "structures.Join",
"entity": "campaigns",
"type": "left",
"on": {
"obj": "structures.Comparision",
"properties": [
{
"obj": "properties.Property",
"name": "donations__campaigns__fk.id"
},
{
"obj": "properties.Property",
"name": "donations.campaign_id"
}
],
"operation": "eq"
},
"alias": "donations__campaigns__fk"
},
{
"obj": "structures.Join",
"entity": "payments",
"type": "right",
"on": {
"obj": "structures.Comparision",
"properties": [
{
"obj": "properties.Property",
"name": "donations.id"
},
{
"obj": "properties.Property",
"name": "donations__payments__fk.donation_id"
}
],
"operation": "eq"
},
"alias": "donations__payments__fk"
},
{
"obj": "structures.Join",
"entity": "organisations",
"type": "left",
"on": {
"obj": "structures.Comparision",
"properties": [
{
"obj": "properties.Property",
"name": "campaigns__organisations__fk.id"
},
{
"obj": "properties.Property",
"name": "donations__campaigns__fk.organisation_id"
}
],
"operation": "eq"
},
"alias": "campaigns__organisations__fk"
}
]
}
Loading

0 comments on commit 3a9d231

Please sign in to comment.