from uuid import uuid4

class Table:
	pass

class SchemaTable (Table):
	def __init__(self, Name: str, Schema: str = 'public'):
		self.Name = Name
		self.Schema = Schema
		self.Column = {}
		self.UniqueKeys = set()
		self.ForeignKeys = set()

	def __hash__(self):
		return hash(self.Name)

	def __eq__(self, other):
		if self.__class__ != other.__class__:
			return NotImplemented
		return self.Name == other.Name

	def __repr__(self):
		return '<{} "{}">'.format(self.__class__.__name__, self.Name)

class QueryTable (Table):
	def __init__(self, Query):
		self.Query = Query
		self.Name = str(uuid4())

	def __hash__(self):
		return hash(self.Query)

	def __eq__(self, other):
		if self.__class__ != other.__class__:
			return NotImplemented
		return self.Query == other.Query

	@property
	def Column(self):
		return self.Query.Column