DbTableParam
=================

.. currentmodule:: axioma.core.dp

.. class:: DbTableParam

	Параметры таблицы или представления

		.. csv-table:: Тип объекта БД :data:`TypeObject`:
				:header: "Наименование величины", "Значение", "Описание"

				unknown, 0, "Не определен"
				table, 1, "Таблица"
				view, 2, "Представление"

		.. py:method:: DbTableParam(owner, name)

			Конструктор

			:param owner: Владелец объекта
			:type owner: :class:`str`
			:param name: Наименование объекта
			:type name: :class:`str`
			:param name: Тип объекта
			:type name: :class:`TypeObject`

		.. py:method:: owner()

			Владелец объекта

			:return: Наименование владельца
			:rtype: :class:`str`
			
		.. py:method:: name()

			Наименование объекта

			:return: Наименование объекта
			:rtype: :class:`str`
			
			.. py:method:: type()

			Тип объекта (таблица или представление), если информация доступна.

			:return: Тип или unknown, если не удалось определить тип
			:rtype: :class:`TypeObject`


DatabaseMetadata
===================

.. currentmodule:: axioma.core.dp

.. class:: DatabaseMetadata

	Получение метаданных из текущей базы данных

		.. py:method:: geometryParams(owner, table)

			Геометрические параметры таблицы.

			:param owner: Владелец таблицы
			:type owner: :class:`str`
			:param table: Наименование таблицы
			:type table: :class:`str`
			:return: Массив пар наименование-значение
			:rtype: :class:`map` [ :class:`str`, :class:`str` ]

		.. py:method:: tableAttributes(owner, table)

			Список атрибутов таблицы. Показывается список атрибутов таблицы исходя из информации словаря базы данных.

			:param owner: Владелец таблицы
			:type owner: :class:`str`
			:param table: Наименование таблицы
			:type table: :class:`str`
			:return: Список атрибутов
			:rtype: :class:`~axioma.core.dp.AttributeList`

		.. py:method:: tableUniqueFields(owner, table)

			Список уникальных полей

			:param owner: Владелец таблицы
			:type owner: :class:`str`
			:param table: Наименование таблицы
			:type table: :class:`str`
			:return: Массив с перечнем списков полей. Это могут быть первичные ключи или уникальные индексы
			:rtype: :class:`list` [ :class:`list` [ :class:`str` ] ]

		.. py:method:: boundingRect(owner, table, field)

			Ограничивающий прямоугольник таблицы

			:param owner: Владелец таблицы
			:type owner: :class:`str`
			:param table: Наименование таблицы
			:type table: :class:`str`
			:param field: Наименование поля с геометрией
			:type field: :class:`str`
			:return: Ограничивающий прямоугольник
			:rtype: :class:`~PyQt5.QtCore.QRectF`

		.. py:method:: currentSchema()

			Текущая схема 

			:return: Наименование схемы
			:rtype: :class:`str`

		.. py:method:: listTables()

			Перечень доступных таблиц базы

			:return: Список
			:rtype: :class:`list` [ :class:`~axioma.core.dp.DbTableParam` ]

		.. py:method:: listOwners()

			Перечень пользовательских схем в базе данных

			:return: Список
			:rtype: :class:`list` [ :class:`str` ]

Пример использования:

  .. code-block:: python
  
		# Запрос метаданных системного словаря БД
		def getMatadata(dataSource):
				meta = dataSource.metadata()
		# атрибуты таблицы
				for attr in meta.tableAttributes('public', 'world'):
						print("ATTR", attr.name(), attr.displayClassName(), attr.type())
		# Унакальные поля таблицы
				print("UNIQUE", meta.tableUniqueFields('public', 'world'))
		# Ограничивающий прямоугольник таблицы
				print("B_RECT", meta.boundingRect('public', 'world', 'geometry'))
		# Параметры геометрии
				print("GEOMETRY", meta.geometryParams('public', 'world'))
