Skip to content

Commit a144a78

Browse files
author
Charles Larivier
committed
feat: add Mbql
Signed-off-by: Charles Larivier <charles@dribbble.com>
1 parent 6a392ac commit a144a78

File tree

4 files changed

+28
-9
lines changed

4 files changed

+28
-9
lines changed

src/metabase/mbql/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +0,0 @@
1-
from metabase.mbql.query import Query

src/metabase/mbql/base.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
from typing import List
22

33

4-
class Mbql:
5-
def compile(self):
6-
raise NotImplementedError()
7-
8-
def __repr__(self):
9-
return str(self.compile())
4+
class Option:
5+
pass
106

117

12-
class Field(Mbql):
13-
def __init__(self, id: int, option=None):
8+
class Mbql:
9+
def __init__(self, id: int, option: Option = None):
1410
self.id = id
1511
self.option = option
1612

1713
def compile(self) -> List:
1814
return ["field", self.id, self.option]
15+
16+
def __repr__(self):
17+
return str(self.compile())

tests/mbql/__init__.py

Whitespace-only changes.

tests/mbql/test_base.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from unittest import TestCase
2+
3+
from metabase.mbql.base import Mbql
4+
5+
6+
class MbqlTests(TestCase):
7+
def test_compile(self):
8+
"""Ensure Mbql.compile() returns a list formatted as ["field", self.id, self.option]."""
9+
mbql = Mbql(id=5, option={"foo": "bar"})
10+
self.assertEqual(["field", 5, {"foo": "bar"}], mbql.compile())
11+
12+
mbql = Mbql(id=10, option=None)
13+
self.assertEqual(["field", 10, None], mbql.compile())
14+
15+
def test_repr(self):
16+
"""Ensure Mbql.__repr__() returns the compiled Mbql as a string."""
17+
mbql = Mbql(id=5, option={"foo": "bar"})
18+
self.assertEqual("['field', 5, {'foo': 'bar'}]", mbql.__repr__())
19+
20+
mbql = Mbql(id=10, option=None)
21+
self.assertEqual("['field', 10, None]", mbql.__repr__())

0 commit comments

Comments
 (0)