@@ -24,46 +24,27 @@ exports.sync = function (driver, opts, cb) {
2424 var subqueries = [ ] ;
2525 var typequeries = [ ] ;
2626 var definitions = [ ] ;
27- var k , i , pending ;
27+ var k , i , pending , prop ;
2828 var primary_keys = opts . id . map ( function ( k ) { return driver . query . escapeId ( k ) ; } ) ;
2929 var keys = [ ] ;
30- for ( i = 0 ; i < opts . id . length ; i ++ ) {
31- if ( opts . properties . hasOwnProperty ( opts . id [ i ] ) ) continue ;
3230
33- keys . push ( driver . query . escapeId ( opts . id [ i ] ) ) ;
34- }
35-
36- for ( i = 0 ; i < keys . length ; i ++ ) {
37- definitions . push ( keys [ i ] + " INTEGER NOT NULL" ) ;
38- }
39-
40- if ( opts . id . length == 1 && ! opts . extension ) {
41- definitions [ definitions . length - 1 ] = keys [ 0 ] + " SERIAL" ;
42- }
31+ for ( k in opts . allProperties ) {
32+ prop = opts . allProperties [ k ] ;
33+ definitions . push ( buildColumnDefinition ( driver , opts . table , k , prop ) ) ;
4334
44- for ( k in opts . properties ) {
45- definitions . push ( buildColumnDefinition ( driver , opts . table , k , opts . properties [ k ] ) ) ;
46-
47- if ( opts . properties [ k ] . type == "enum" ) {
35+ if ( prop . type == "enum" ) {
4836 typequeries . push (
4937 "CREATE TYPE " + driver . query . escapeId ( "enum_" + opts . table + "_" + k ) + " AS ENUM (" +
50- opts . properties [ k ] . values . map ( driver . query . escapeVal . bind ( driver ) ) + ")"
38+ prop . values . map ( driver . query . escapeVal . bind ( driver ) ) + ")"
5139 ) ;
5240 }
5341 }
5442
55- for ( i = 0 ; i < opts . one_associations . length ; i ++ ) {
56- if ( opts . one_associations [ i ] . extension ) continue ;
57- if ( opts . one_associations [ i ] . reversed ) continue ;
58- for ( k in opts . one_associations [ i ] . field ) {
59- definitions . push ( buildColumnDefinition ( driver , opts . table , k , opts . one_associations [ i ] . field [ k ] ) ) ;
60- }
61- }
62-
63- for ( k in opts . properties ) {
64- if ( opts . properties [ k ] . unique === true ) {
43+ for ( k in opts . allProperties ) {
44+ prop = opts . allProperties [ k ] ;
45+ if ( prop . unique === true ) {
6546 definitions . push ( "UNIQUE (" + driver . query . escapeId ( k ) + ")" ) ;
66- } else if ( opts . properties [ k ] . index ) {
47+ } else if ( prop . index ) {
6748 definitions . push ( "INDEX (" + driver . query . escapeId ( k ) + ")" ) ;
6849 }
6950 }
@@ -77,7 +58,7 @@ exports.sync = function (driver, opts, cb) {
7758 typequeries : typequeries ,
7859 subqueries : subqueries
7960 } ) ;
80-
61+
8162 for ( i = 0 ; i < opts . one_associations . length ; i ++ ) {
8263 if ( opts . one_associations [ i ] . extension ) continue ;
8364 if ( opts . one_associations [ i ] . reversed ) continue ;
@@ -101,7 +82,7 @@ exports.sync = function (driver, opts, cb) {
10182 for ( i = 0 ; i < opts . many_associations . length ; i ++ ) {
10283 definitions = [ ] ;
10384 typequeries = [ ] ;
104-
85+
10586 for ( k in opts . many_associations [ i ] . mergeId ) {
10687 definitions . push ( buildColumnDefinition ( driver , opts . many_associations [ i ] . mergeTable , k , opts . many_associations [ i ] . mergeId [ k ] ) ) ;
10788 }
@@ -120,7 +101,7 @@ exports.sync = function (driver, opts, cb) {
120101 ) ;
121102 }
122103 }
123-
104+
124105 var index = null ;
125106 for ( k in opts . many_associations [ i ] . mergeId ) {
126107 if ( index == null ) index = driver . query . escapeId ( k ) ;
@@ -207,6 +188,9 @@ function buildColumnDefinition(driver, table, name, prop) {
207188 def = driver . query . escapeId ( name ) + " VARCHAR(" + Math . max ( parseInt ( prop . size , 10 ) || 255 , 1 ) + ")" ;
208189 }
209190 break ;
191+ case "serial" :
192+ def = driver . query . escapeId ( name ) + " SERIAL" ;
193+ break ;
210194 case "number" :
211195 if ( prop . rational === false ) {
212196 def = driver . query . escapeId ( name ) + " " + colTypes . integer [ prop . size || 4 ] ;
0 commit comments