From e25d5d671f9283acc099a3d6737d0dd6c8a4a534 Mon Sep 17 00:00:00 2001 From: mipengcheng3 Date: Tue, 18 Jul 2023 10:50:51 +0800 Subject: [PATCH] session INSERT clause should be invoke only once, and all insert record should be same type --- gee-orm/day3-save-query/session/record.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/gee-orm/day3-save-query/session/record.go b/gee-orm/day3-save-query/session/record.go index 5f033e0..62740e1 100644 --- a/gee-orm/day3-save-query/session/record.go +++ b/gee-orm/day3-save-query/session/record.go @@ -7,10 +7,20 @@ import ( // Insert one or more records in database func (s *Session) Insert(values ...interface{}) (int64, error) { + if len(values) < 1 { + panic("There is no value to insert") + } recordValues := make([]interface{}, 0) + + baseValue := values[0] + table := s.Model(baseValue).RefTable() + baseType := reflect.TypeOf(baseValue) + s.clause.Set(clause.INSERT, table.Name, table.FieldNames) + for _, value := range values { - table := s.Model(value).RefTable() - s.clause.Set(clause.INSERT, table.Name, table.FieldNames) + if reflect.TypeOf(value) != baseType { + panic("All insert values must be the same type") + } recordValues = append(recordValues, table.RecordValues(value)) }