File size: 2,295 Bytes
b9122de
 
 
 
 
 
 
 
 
 
 
 
 
 
 
054d2a0
b9122de
054d2a0
 
 
 
 
 
b9122de
 
 
054d2a0
b9122de
 
 
 
054d2a0
b9122de
 
 
 
054d2a0
b9122de
 
 
 
 
 
054d2a0
 
 
 
 
 
 
 
 
b9122de
054d2a0
 
 
 
 
b9122de
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import logging
from typing import List
from src.api.database import Database

logger = logging.getLogger(__name__)

class PostgresqlService:
    def __init__(self, db: Database):
        self.db = db


    async def get_db_rows_from_dataset_name(self, dataset) -> List:
        query_mapping = {
            "re-mind/product_type_embedding": {
                "column": "type",
                "target_column": "product_type",
                "table": "product_producttype",
                "optional": {
                    "column": "name",
                    "target_column": "product_category",
                    "table": "product_category",
                    "foreign_key": "category_id",
                }
            },
            "re-mind/marketplace_name_embedding": {
                "column": "name",
                "target_column": "marketplace_name",
                "table": "invoice_marketplace",
            },
            "re-mind/manufacturer_name_embedding": {
                "column": "name",
                "target_column": "manufacturer_name",
                "table": "product_manufacturer",
            },
            "re-mind/seller_name_embedding": {
                "column": "name",
                "target_column": "seller_name",
                "table": "product_seller",
            }
        }

        db_table = query_mapping[dataset]["table"]
        column = query_mapping[dataset]["column"]
        target_column = query_mapping[dataset]["target_column"]
        optional = query_mapping[dataset].get("optional")
        optional_query_1 = ""
        optional_query_2 = ""
        if optional:
            optional_table = optional["table"]
            optional_column = optional["column"]
            optional_target_column = optional["target_column"]
            optional_foreign_key = optional["foreign_key"]

            optional_query_1 = f", {optional_table}.{optional_column} AS {optional_target_column}"
            optional_query_2 = f"INNER JOIN {optional_table} ON {db_table}.{optional_foreign_key} = {optional_table}.id"
        query = f"SELECT {db_table}.{column} AS {target_column} {optional_query_1} FROM {db_table} {optional_query_2}"

        logger.info(query)
        results = await self.db.fetch(query)

        return results