(fmter QueryFormatter, b []byte)
| 64 | } |
| 65 | |
| 66 | func (q *CreateTableQuery) AppendQuery(fmter QueryFormatter, b []byte) (_ []byte, err error) { |
| 67 | b = appendComment(b, q.q.comment) |
| 68 | if q.q.stickyErr != nil { |
| 69 | return nil, q.q.stickyErr |
| 70 | } |
| 71 | if q.q.tableModel == nil { |
| 72 | return nil, errModelNil |
| 73 | } |
| 74 | |
| 75 | table := q.q.tableModel.Table() |
| 76 | |
| 77 | b = append(b, "CREATE "...) |
| 78 | if q.opt != nil && q.opt.Temp { |
| 79 | b = append(b, "TEMP "...) |
| 80 | } |
| 81 | b = append(b, "TABLE "...) |
| 82 | if q.opt != nil && q.opt.IfNotExists { |
| 83 | b = append(b, "IF NOT EXISTS "...) |
| 84 | } |
| 85 | b, err = q.q.appendFirstTable(fmter, b) |
| 86 | if err != nil { |
| 87 | return nil, err |
| 88 | } |
| 89 | b = append(b, " ("...) |
| 90 | |
| 91 | for i, field := range table.Fields { |
| 92 | if i > 0 { |
| 93 | b = append(b, ", "...) |
| 94 | } |
| 95 | |
| 96 | b = append(b, field.Column...) |
| 97 | b = append(b, " "...) |
| 98 | b = q.appendSQLType(b, field) |
| 99 | if field.hasFlag(NotNullFlag) { |
| 100 | b = append(b, " NOT NULL"...) |
| 101 | } |
| 102 | if field.hasFlag(UniqueFlag) { |
| 103 | b = append(b, " UNIQUE"...) |
| 104 | } |
| 105 | if field.Default != "" { |
| 106 | b = append(b, " DEFAULT "...) |
| 107 | b = append(b, field.Default...) |
| 108 | } |
| 109 | } |
| 110 | |
| 111 | b = appendPKConstraint(b, table.PKs) |
| 112 | b = appendUniqueConstraints(b, table) |
| 113 | |
| 114 | if q.opt != nil && q.opt.FKConstraints { |
| 115 | for _, rel := range table.Relations { |
| 116 | b = q.appendFKConstraint(fmter, b, rel) |
| 117 | } |
| 118 | } |
| 119 | |
| 120 | b = append(b, ")"...) |
| 121 | |
| 122 | if table.PartitionBy != "" { |
| 123 | b = append(b, " PARTITION BY "...) |
no test coverage detected