コード例 #1
0
ファイル: datadoc.py プロジェクト: razorpay/querybook
def update_data_cell(
    id, commit=True, session=None, **fields,
):
    data_cell = get_data_cell_by_id(id, session=session)
    if not data_cell:
        return

    if "meta" in fields:
        fields["meta"] = sanitize_data_cell_meta(
            data_cell.cell_type.name, fields["meta"]
        )

    updated = update_model_fields(
        data_cell, skip_if_value_none=True, field_names=["meta", "context"], **fields
    )
    if updated:
        data_cell.updated_at = datetime.datetime.now()
        data_cell.doc.updated_at = datetime.datetime.now()

        if commit:
            session.commit()
            if data_cell.doc:
                update_es_data_doc_by_id(data_cell.doc.id)

    return data_cell
コード例 #2
0
def create_data_cell(cell_type=None,
                     context=None,
                     meta=None,
                     commit=True,
                     session=None):
    assert cell_type in cell_types, "Invalid cell type"
    assert isinstance(context, str), "Context must be string"

    processed_meta = sanitize_data_cell_meta(cell_type, meta)
    data_cell = DataCell(
        cell_type=cell_type,
        context=context,
        meta=processed_meta,
    )

    session.add(data_cell)

    if commit:
        session.commit()
        data_cell.id
        if data_cell.cell_type == DataCellType.query:
            update_es_query_cell_by_id(data_cell.id)
    else:
        session.flush()

    return data_cell