Initial import from Docker volume
This commit is contained in:
183
backend/database.py
Executable file
183
backend/database.py
Executable file
@@ -0,0 +1,183 @@
|
||||
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
||||
# this repository contains the full copyright notices and license terms.
|
||||
from collections import namedtuple
|
||||
|
||||
from sql import For
|
||||
|
||||
DatabaseIntegrityError = None
|
||||
DatabaseOperationalError = None
|
||||
DatabaseTimeoutError = None
|
||||
|
||||
SQLType = namedtuple('SQLType', 'base type')
|
||||
|
||||
|
||||
class DatabaseInterface(object):
|
||||
'''
|
||||
Define generic interface for database connection
|
||||
'''
|
||||
flavor = None
|
||||
IN_MAX = 1000
|
||||
|
||||
def __new__(cls, name=''):
|
||||
return object.__new__(cls)
|
||||
|
||||
def __init__(self, name=''):
|
||||
self.name = name
|
||||
|
||||
def connect(self):
|
||||
raise NotImplementedError
|
||||
|
||||
def get_connection(
|
||||
self, autocommit=False, readonly=False, statement_timeout=None):
|
||||
raise NotImplementedError
|
||||
|
||||
def put_connection(self, connection, close=False):
|
||||
raise NotImplementedError
|
||||
|
||||
def close(self):
|
||||
raise NotImplementedError
|
||||
|
||||
@classmethod
|
||||
def create(cls, connection, database_name):
|
||||
raise NotImplementedError
|
||||
|
||||
@classmethod
|
||||
def drop(cls, connection, database_name):
|
||||
raise NotImplementedError
|
||||
|
||||
def list(self, hostname=None):
|
||||
raise NotImplementedError
|
||||
|
||||
def init(self):
|
||||
raise NotImplementedError
|
||||
|
||||
def test(self, hostname=None):
|
||||
'''
|
||||
Test if it is a Tryton database.
|
||||
'''
|
||||
raise NotImplementedError
|
||||
|
||||
def nextid(self, connection, table, count=1):
|
||||
pass
|
||||
|
||||
def setnextid(self, connection, table, value):
|
||||
pass
|
||||
|
||||
def currid(self, connection, table):
|
||||
pass
|
||||
|
||||
@classmethod
|
||||
def lock(cls, connection, table):
|
||||
raise NotImplementedError
|
||||
|
||||
def lock_id(self, id, timeout=None):
|
||||
raise NotImplementedError
|
||||
|
||||
def has_constraint(self, constraint):
|
||||
raise NotImplementedError
|
||||
|
||||
def has_returning(self):
|
||||
return False
|
||||
|
||||
def has_multirow_insert(self):
|
||||
return False
|
||||
|
||||
def has_select_for(self):
|
||||
return False
|
||||
|
||||
def get_select_for_skip_locked(self):
|
||||
return For
|
||||
|
||||
def has_window_functions(self):
|
||||
return False
|
||||
|
||||
def has_unaccent(self):
|
||||
return False
|
||||
|
||||
def has_unaccent_indexable(self):
|
||||
return False
|
||||
|
||||
def unaccent(self, value):
|
||||
return value
|
||||
|
||||
def has_similarity(self):
|
||||
return False
|
||||
|
||||
def similarity(self, column, value):
|
||||
raise NotImplementedError
|
||||
|
||||
def has_search_full_text(self):
|
||||
return False
|
||||
|
||||
def format_full_text(self, *documents, language=None):
|
||||
return '\n'.join(documents)
|
||||
|
||||
def format_full_text_query(self, query, language=None):
|
||||
raise NotImplementedError
|
||||
|
||||
def search_full_text(self, document, query):
|
||||
raise NotImplementedError
|
||||
|
||||
def rank_full_text(self, document, query, normalize=None):
|
||||
"Return the expression that ranks query on document"
|
||||
raise NotImplementedError
|
||||
|
||||
@classmethod
|
||||
def has_sequence(cls):
|
||||
return False
|
||||
|
||||
def sequence_exist(self, connection, name):
|
||||
if not self.has_sequence():
|
||||
return
|
||||
raise NotImplementedError
|
||||
|
||||
def sequence_create(
|
||||
self, connection, name, number_increment=1, start_value=1):
|
||||
if not self.has_sequence():
|
||||
return
|
||||
raise NotImplementedError
|
||||
|
||||
def sequence_update(
|
||||
self, connection, name, number_increment=1, start_value=1):
|
||||
if not self.has_sequence():
|
||||
return
|
||||
raise NotImplementedError
|
||||
|
||||
def sequence_rename(self, connection, old_name, new_name):
|
||||
if not self.has_sequence():
|
||||
return
|
||||
raise NotImplementedError
|
||||
|
||||
def sequence_delete(self, connection, name):
|
||||
if not self.has_sequence():
|
||||
return
|
||||
raise NotImplementedError
|
||||
|
||||
def sequence_next_number(self, connection, name):
|
||||
if not self.has_sequence():
|
||||
return
|
||||
raise NotImplementedError
|
||||
|
||||
def has_channel(self):
|
||||
return False
|
||||
|
||||
def sql_type(self, type_):
|
||||
pass
|
||||
|
||||
def sql_format(self, type_, value):
|
||||
pass
|
||||
|
||||
def json_get(self, column, key=None):
|
||||
raise NotImplementedError
|
||||
|
||||
def json_key_exists(self, column, key):
|
||||
raise NotImplementedError
|
||||
|
||||
def json_any_keys_exist(self, column, keys):
|
||||
raise NotImplementedError
|
||||
|
||||
def json_all_keys_exist(self, column, keys):
|
||||
raise NotImplementedError
|
||||
|
||||
def json_contains(self, column, json):
|
||||
raise NotImplementedError
|
||||
Reference in New Issue
Block a user