// SaveProduct will create a product if the ID field is not initialized // if ID field is initialized, it will update the conresponding product. func (r *Registry) SaveProduct(product *models.Product, reply *models.Product) error { db, err := getDB() if err != nil { return err } err = db.Save(product).Error if err != nil { return err } key, err := r.keygen.GenRandomKey(int64(product.ID)) if err != nil { return err } product.ProductKey = key err = db.Save(product).Error if err != nil { return err } reply.ID = product.ID reply.ProductName = product.ProductName reply.ProductDescription = product.ProductDescription reply.ProductKey = product.ProductKey reply.ProductConfig = product.ProductConfig reply.CreatedAt = product.CreatedAt reply.UpdatedAt = product.UpdatedAt return nil }
func setProduct(target *models.Product, src *models.Product) { target.ID = src.ID target.ProductName = src.ProductName target.ProductDescription = src.ProductDescription target.ProductKey = src.ProductKey target.ProductConfig = src.ProductConfig target.CreatedAt = src.CreatedAt target.UpdatedAt = src.UpdatedAt }
func addProduct() error { args := models.Product{} reader := bufio.NewReader(os.Stdin) fmt.Printf("vendor ID: ") id, err := reader.ReadString('\n') if err != nil { return err } vendor := strings.Replace(id, "\n", "", -1) vendorid, err := strconv.Atoi(vendor) if err != nil { return err } args.VendorID = int32(vendorid) fmt.Printf("product name: ") name, err := reader.ReadString('\n') if err != nil { return err } args.ProductName = strings.Replace(name, "\n", "", -1) fmt.Printf("product description: ") desc, err := reader.ReadString('\n') if err != nil { return err } args.ProductDescription = strings.Replace(desc, "\n", "", -1) fmt.Printf("product config json file: ") file, err := reader.ReadString('\n') if err != nil { return err } jsonfile := strings.Replace(file, "\n", "", -1) fi, err := os.Open(jsonfile) if err != nil { return err } content, err := ioutil.ReadAll(fi) config := string(content) fi.Close() _, err = productconfig.New(config) if err != nil { return err } args.ProductConfig = config reply := &models.Product{} err = server.RPCCallByName("registry", "Registry.SaveProduct", &args, reply) if err != nil { return err } fmt.Println("=======> product created successfully:") printStruct(reply) fmt.Println("=======") return nil }