rt# 74031 Update database schema
authorMitch Jackson <mitch@freeside.biz>
Sat, 9 Dec 2017 23:00:21 +0000 (23:00 +0000)
committerMitch Jackson <mitch@freeside.biz>
Tue, 19 Dec 2017 23:10:53 +0000 (17:10 -0600)
FS/FS/Schema.pm

index 6d7520b..6d88204 100644 (file)
@@ -495,7 +495,42 @@ sub tables_hashref {
 
   my $username_len = 64; #usernamemax config file
 
-    # name type nullability length default local
+  # Returns a hashref defining the entire application database schema
+  # Each key of the hashref contains a structure describing a database table
+  #
+  # table_name => {
+  #   columns      => [...],
+  #   primary_key  => 'column',
+  #   unique       => [column,column,...],
+  #   index        => [[column],[column,column],...],
+  #   foreign_keys => [{...},{...},...],
+  # }
+  #
+  #
+  # columns => [
+  #
+  #   'column_name',
+  #
+  #   'column_type',
+  #
+  #   'NULL' or '',   # 'NULL' : Allow null values
+  #                   # ''     : Disallow null values
+  #
+  #   'length',       # Column size value.  eg:
+  #                   # 40     : VARCHAR(40)
+  #                   # '10,2' : FLOAT(10,2)
+  #
+  #   'default',      # Default column value for a new record
+  #                   # (Unclear is setting this to '' results in a default
+  #                   #  value of NULL or empty string)
+  #
+  #   '',             # local ?
+  #
+  #   name, type, nullability, length, default, local,
+  #   name, type, nullability, length, default, local,
+  #   ...
+  #
+  # ],
 
   return {
 
@@ -7601,6 +7636,41 @@ sub tables_hashref {
       'foreign_keys'  => [],
     },
 
+    'realestate_property' => {
+      'columns' => [
+        'propnum',  'serial',  '',     '',      '',  '',
+        'agentnum', 'int',     'NULL', '',      '',  '',
+        'title',    'varchar', '',     $char_d, '',  '',
+        'address1', 'varchar', 'NULL', $char_d, '',  '',
+        'address2', 'varchar', 'NULL', $char_d, '',  '',
+        'city',     'varchar', 'NULL', $char_d, '',  '',
+        'state',    'varchar', 'NULL', $char_d, '',  '',
+        'zip',      'char',    'NULL', 5,       '',  '',
+        'disabled', 'char',    '',     1,       '0', '',
+      ],
+      'primary_key'  => 'propnum',
+      'unique'       => [],
+      'index'        => [ ['agentnum'] ],
+      'foreign_keys' => [
+        {columns => ['agentnum'], table => 'agent'}
+      ],
+    },
+
+    'realestate_subproperty' => {
+      'columns' => [
+        'spropnum', 'serial',  '', '',      '',  '',
+        'propnum',  'int',     '', '',      '',  '',
+        'subtitle', 'varchar', '', $char_d, '',  '',
+        'disabled', 'char',    '', 1,       '0', '',
+      ],
+      'primary_key'  => 'spropnum',
+      'unique'       => [],
+      'index'        => [ ['propnum'] ],
+      'foreign_keys' => [
+        {columns => ['propnum'], table => 'realestate_property'}
+      ],
+    },
+
     # name type nullability length default local
 
     #'new_table' => {
@@ -7627,4 +7697,3 @@ L<DBIx::DBSchema>
 =cut
 
 1;
-