Insert inserts the model.
(values ...interface{})
| 1024 | |
| 1025 | // Insert inserts the model. |
| 1026 | func (q *Query) Insert(values ...interface{}) (Result, error) { |
| 1027 | if q.stickyErr != nil { |
| 1028 | return nil, q.stickyErr |
| 1029 | } |
| 1030 | |
| 1031 | model, err := q.newModel(values) |
| 1032 | if err != nil { |
| 1033 | return nil, err |
| 1034 | } |
| 1035 | |
| 1036 | ctx := q.ctx |
| 1037 | |
| 1038 | if q.tableModel != nil && q.tableModel.Table().hasFlag(beforeInsertHookFlag) { |
| 1039 | ctx, err = q.tableModel.BeforeInsert(ctx) |
| 1040 | if err != nil { |
| 1041 | return nil, err |
| 1042 | } |
| 1043 | } |
| 1044 | |
| 1045 | query := NewInsertQuery(q) |
| 1046 | res, err := q.returningQuery(ctx, model, query) |
| 1047 | if err != nil { |
| 1048 | return nil, err |
| 1049 | } |
| 1050 | |
| 1051 | if q.tableModel != nil { |
| 1052 | if err := q.tableModel.AfterInsert(ctx); err != nil { |
| 1053 | return nil, err |
| 1054 | } |
| 1055 | } |
| 1056 | |
| 1057 | return res, nil |
| 1058 | } |
| 1059 | |
| 1060 | // SelectOrInsert selects the model inserting one if it does not exist. |
| 1061 | // It returns true when model was inserted. |