WIP refactoring facets to plugin, refs #427

pull/432/head
Simon Willison 2019-04-13 13:03:59 -07:00
rodzic b495839e60
commit 63e52c0936
1 zmienionych plików z 33 dodań i 0 usunięć

Wyświetl plik

@ -59,6 +59,7 @@ class Facet:
self.table = table # can be None
self.configs = configs
<<<<<<< HEAD
async def suggest(self, sql, params, filtered_table_rows_count):
return []
@ -83,6 +84,28 @@ class ColumnFacet(Facet):
async def suggest(self, sql, params, filtered_table_rows_count):
# Detect column names using the "limit 0" trick
columns = await self.get_columns(sql, params)
=======
async def suggest(self, sql, params):
raise NotImplementedError
async def facet_results(self, sql, params):
# returns ([results], [timed_out])
raise NotImplementedError
class ColumnFacet(Facet):
# This is the default so type=""
type = ""
async def suggest(self, sql, params, filtered_table_rows_count):
# Detect column names
columns = (
await self.ds.execute(
self.database, "select * from ({}) limit 0".format(sql),
params
)
).columns
>>>>>>> WIP refactoring facets to plugin, refs #427
facet_size = self.ds.config("default_facet_size")
suggested_facets = []
for column in columns:
@ -139,9 +162,13 @@ class ColumnFacet(Facet):
other_args[key] = value[0]
facet_size = self.ds.config("default_facet_size")
<<<<<<< HEAD
for config in (self.configs or []):
column = config.get("column") or config["single"]
# TODO: does this query break if inner sql produces value or count columns?
=======
for column in self.configs:
>>>>>>> WIP refactoring facets to plugin, refs #427
facet_sql = """
select {col} as value, count(*) as count from (
{sql}
@ -203,6 +230,7 @@ class ColumnFacet(Facet):
class ManyToManyFacet(Facet):
type = "m2m"
<<<<<<< HEAD
async def suggest(self, sql, params, filtered_table_rows_count):
# This is calculated based on foreign key relationships to this table
# Are there any many-to-many tables pointing here?
@ -660,3 +688,8 @@ emoji_re = re.compile(
"\U0001f95e\U0001f95f-\U0001f96b\U0001f980-\U0001f984\U0001f985-\U0001f991"
"\U0001f992-\U0001f997\U0001f9c0\U0001f9d0-\U0001f9e6]"
)
=======
class ArrayFacet(Facet):
type = "array"
>>>>>>> WIP refactoring facets to plugin, refs #427