Allow reordering the delivery list.
[readifood.git] / propel / schema.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <database name="readifood" defaultIdMethod="native">
3   <!-- City -->
4   <table name="City" phpName="City" baseClass="ReadifoodObject">
5     <vendor type="mysql">
6       <parameter name="Engine" value="InnoDB"/>
7       <parameter name="Charset" value="utf8"/>
8     </vendor>
9     <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/>
10     <column name="name" type="varchar" size="64" required="true"/>
11     <column name="postcode_area" type="varchar" size="4" required="true"/>
12     <unique name="postcode">
13       <unique-column name="name"/>
14       <unique-column name="postcode_area"/>
15     </unique>
16   </table>
17
18   <!-- Area or neighbourhood -->
19   <table name="Area" phpName="Area" baseClass="ReadifoodObject">
20     <vendor type="mysql">
21       <parameter name="Engine" value="InnoDB"/>
22       <parameter name="Charset" value="utf8"/>
23     </vendor>
24     <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/>
25     <column name="city_id" type="integer" required="true"/>
26     <column name="name" type="varchar" size="64" required="true"/>
27     <column name="days" type="integer" required="true"/>
28     <foreign-key foreignTable="City" phpName="City" refPhpName="Area">
29       <reference local="city_id" foreign="id"/>
30     </foreign-key>
31   </table>
32
33   <!-- Address -->
34   <table name="Address" phpName="Address" baseClass="ReadifoodObject">
35     <vendor type="mysql">
36       <parameter name="Engine" value="InnoDB"/>
37       <parameter name="Charset" value="utf8"/>
38     </vendor>
39     <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/>
40     <column name="area_id" type="integer" required="true"/>
41     <column name="line" type="varchar" size="128" required="true"/>
42     <column name="postcode" type="varchar" size="16" required="true"/>
43     <foreign-key foreignTable="Area" phpName="Area" refPhpName="Address">
44       <reference local="area_id" foreign="id"/>
45     </foreign-key>
46   </table>
47
48   <!-- Contact -->
49   <table name="Contact" phpName="Contact" baseClass="ReadifoodObject">
50     <vendor type="mysql">
51       <parameter name="Engine" value="InnoDB"/>
52       <parameter name="Charset" value="utf8"/>
53     </vendor>
54     <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/>
55     <column name="added" type="date" required="true"/>
56     <column name="address_id" type="integer" required="true"/>
57     <column name="forename" type="varchar" size="64" required="true"/>
58     <column name="middle" type="varchar" size="128" required="true"/>
59     <column name="surname" type="varchar" size="64" required="true"/>
60     <column name="displayname" type="varchar" size="256" required="true"/>
61     <column name="role" type="integer" required="true"/>
62     <column name="telephone1" type="varchar" size="32" required="true"/>
63     <column name="telephone2" type="varchar" size="32" required="true"/>
64     <column name="email" type="varchar" size="64" required="true"/>
65     <column name="parcel" type="integer"/>
66     <column name="notes" type="longvarchar" lazyLoad="true"/>
67     <foreign-key foreignTable="Address" phpName="Address" refPhpName="Contact">
68       <reference local="address_id" foreign="id"/>
69     </foreign-key>
70   </table>
71
72   <!-- User -->
73   <table name="User" phpName="User" baseClass="ReadifoodObject">
74     <vendor type="mysql">
75       <parameter name="Engine" value="InnoDB"/>
76       <parameter name="Charset" value="utf8"/>
77     </vendor>
78     <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/>
79     <column name="contact_id" type="integer" required="true"/>
80     <column name="username" type="varchar" size="64" required="true"/>
81     <column name="admin" type="integer" required="true"/>
82     <foreign-key foreignTable="Contact" phpName="Contact" refPhpName="User">
83       <reference local="contact_id" foreign="id"/>
84     </foreign-key>
85   </table>
86
87   <!-- Hub -->
88   <table name="Hub" phpName="Hub" baseClass="ReadifoodObject">
89     <vendor type="mysql">
90       <parameter name="Engine" value="InnoDB"/>
91       <parameter name="Charset" value="utf8"/>
92     </vendor>
93     <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/>
94     <column name="address_id" type="integer" required="true"/>
95     <column name="displayname" type="varchar" size="256" required="true"/>
96     <column name="telephone1" type="varchar" size="32" required="true"/>
97     <column name="telephone2" type="varchar" size="32" required="true"/>
98     <column name="email" type="varchar" size="64" required="true"/>
99     <column name="role" type="integer" required="true"/>
100     <foreign-key foreignTable="Address" phpName="Address" refPhpName="Hub">
101       <reference local="address_id" foreign="id"/>
102     </foreign-key>
103   </table>
104
105   <!-- Donation -->
106   <table name="Donation" phpName="Donation" baseClass="ReadifoodObject">
107     <vendor type="mysql">
108       <parameter name="Engine" value="InnoDB"/>
109       <parameter name="Charset" value="utf8"/>
110     </vendor>
111     <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/>
112     <column name="date" type="date" required="true"/>
113     <column name="contact_id" type="integer" required="true"/>
114     <column name="hub_id" type="integer" required="true"/>
115     <column name="quantity" type="integer" required="true"/>
116     <foreign-key foreignTable="Contact" phpName="Contact" refPhpName="Donation">
117       <reference local="contact_id" foreign="id"/>
118     </foreign-key>
119     <foreign-key foreignTable="Hub" phpName="Hub" refPhpName="Donation">
120       <reference local="hub_id" foreign="id"/>
121     </foreign-key>
122   </table>
123
124   <!-- Order -->
125   <table name="FoodOrder" phpName="Order" baseClass="ReadifoodObject">
126     <vendor type="mysql">
127       <parameter name="Engine" value="InnoDB"/>
128       <parameter name="Charset" value="utf8"/>
129     </vendor>
130     <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/>
131     <column name="date" type="date" required="true"/>
132     <column name="requester_id" type="integer" required="true"/>
133     <column name="beneficiary_id" type="integer" required="true"/>
134     <column name="hub_id" type="integer" required="false"/>
135     <column name="parcel" type="integer" required="true"/>
136     <column name="notes" type="longvarchar" lazyLoad="true"/>
137     <foreign-key foreignTable="Contact" phpName="Requester" refPhpName="Requester">
138       <reference local="requester_id" foreign="id"/>
139     </foreign-key>
140     <foreign-key foreignTable="Contact" phpName="Beneficiary" refPhpName="Beneficiary">
141       <reference local="beneficiary_id" foreign="id"/>
142     </foreign-key>
143     <foreign-key foreignTable="Hub" phpName="Hub" refPhpName="Hub">
144       <reference local="hub_id" foreign="id"/>
145     </foreign-key>
146   </table>
147
148   <!-- Order state -->
149   <table name="OrderState" phpName="OrderState" baseClass="ReadifoodObject">
150     <vendor type="mysql">
151       <parameter name="Engine" value="InnoDB"/>
152       <parameter name="Charset" value="utf8"/>
153     </vendor>
154     <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/>
155     <column name="updated" type="timestamp" required="true"/>
156     <column name="order_id" type="integer" required="true"/>
157     <column name="user_id" type="integer" required="true"/>
158     <column name="driver_id" type="integer" required="false"/>
159     <column name="state" type="integer" required="true"/>
160     <foreign-key foreignTable="FoodOrder" phpName="Order" refPhpName="OrderState">
161       <reference local="order_id" foreign="id"/>
162     </foreign-key>
163     <foreign-key foreignTable="User" phpName="User" refPhpName="OrderState">
164       <reference local="user_id" foreign="contact_id"/>
165     </foreign-key>
166     <foreign-key foreignTable="Contact" phpName="Driver" refPhpName="OrderState">
167       <reference local="driver_id" foreign="id"/>
168     </foreign-key>
169   </table>
170 </database>