-
birth_date = Field('birth_date') # Short constructor, positional
+birth_date = Field('birth_date') # Short constructor, positional
-person = Table.make( # Long constructor, keywords
- name = 'person',
- alias = 'p', # For later
+person = Table.make( # Long constructor, keywords
+ name = 'person',
+ alias = 'p', # For later
fields = [
Field.make(
- name = 'person_id'
+ name = 'person_id'
),
- Field('last_name'),
- Field('first_date'),
+ Field('last_name'),
+ Field('first_date'),
birth_date
]
)
-relationship = Table(
- name = 'person_relationship',
- alias = 'pr',
+relationship = Table(
+ name = 'person_relationship',
+ alias = 'pr',
fields = [
- Field.make('person_id'),
- Field.make('related_person_id')
+ Field.make('person_id'),
+ Field.make('related_person_id')
]
)
@@ -130,57 +130,57 @@ Snippets
-
print(Query.craft(person)) # Crafting from a normal table
-# out >> select p.person_id, p.last_name, p.first_name, p.birth_date from person p
+print(Query.craft(person)) # Crafting from a normal table
+# out >> select p.person_id, p.last_name, p.first_name, p.birth_date from person p
-print(Query.craft(relationship)) # likewise
-# out >> select pr.person_id, pr.related_person_id from person_relationship pr
+print(Query.craft(relationship)) # likewise
+# out >> select pr.person_id, pr.related_person_id from person_relationship pr
-all_person = Query.make(
- name = 'everyone', # Name functions as an id
+all_person = Query.make(
+ name = 'everyone', # Name functions as an id
tables = [
person
]
)
-print(Query.craft(all_person)) # ditto
+print(Query.craft(all_person)) # ditto
-people_relationships = Query.make(
- name = 'everyelse',
+people_relationships = Query.make(
+ name = 'everyelse',
tables = [
person,
relationship
]
)
-print(Query.craft(people_relationships)) # Outer join
-# out >>
-# select
-# p.person_id, p.last_name, p.first_name, p.birth_date,
-# pr.person_id, pr.related_person_id
-# from
-# person p, person_relationship pr
+print(Query.craft(people_relationships)) # Outer join
+# out >>
+# select
+# p.person_id, p.last_name, p.first_name, p.birth_date,
+# pr.person_id, pr.related_person_id
+# from
+# person p, person_relationship pr
-# Astute readers will realize that there are two person_ids here which will fail
+# Astute readers will realize that there are two person_ids here which will fail
-person_relations = Link.make( # A way to refactor ON clauses
- name = 'p_and_pr',
- source = Table.getField('person_id', person), # Still experimental
- target = Table.getField('person_id', people_relationships)
+person_relations = Link.make( # A way to refactor ON clauses
+ name = 'p_and_pr',
+ source = Table.getField('person_id', person), # Still experimental
+ target = Table.getField('person_id', people_relationships)
)
-relations_person = Link.make(
- name = 'pr_and_p',
+relations_person = Link.make(
+ name = 'pr_and_p',
source = people_relationships,
target = person
)
-everyone = Query.make(
- name = 'everyone',
+everyone = Query.make(
+ name = 'everyone',
table = [
person,
relationship,
- Table.setAlias('np', person)
+ Table.setAlias('np', person)
],
link = [
person_relations,
@@ -188,14 +188,14 @@ Snippets
]
)
-print(Query.craft(everyone))
-# out >>
-# select
-# *
-# from
-# person p
-# inner join person_relations pr on p.person_ id = pr.person_id
-# inner join person np on np.person_id = pr.related_person_id
+print(Query.craft(everyone))
+# out >>
+# select
+# *
+# from
+# person p
+# inner join person_relations pr on p.person_ id = pr.person_id
+# inner join person np on np.person_id = pr.related_person_id