Ejemplo n.º 1
0
func (od *ormdrv) Get(obj interface{}, params ...string) (bool, error) {
	n := len(params)
	if n <= 0 {
		return false, fmt.Errorf("Invalid key")
	}

	keys := []string{}
	s := reflect.ValueOf(obj).Elem()
	typeOfS := s.Type()
	for i := 0; i < n; i++ {
		for k := 0; k < s.NumField(); k++ {
			f := s.Field(k)

			if f.Interface() == params[i] {
				keys = append(keys, typeOfS.Field(k).Name)
				break
			}
		}
	}

	if len(keys) <= 0 {
		return false, fmt.Errorf("Wrong key to query")
	}

	o := orm.NewOrm()
	if err := o.Read(obj, keys...); err != nil {
		if err == orm.ErrNoRows {
			return false, nil
		} else {
			return false, err
		}
	}

	return true, nil
}
Ejemplo n.º 2
0
func (od *ormdrv) Save(obj interface{}, params ...string) error {
	o := orm.NewOrm()

	exists, err := od.Get(obj, params...)
	if err != nil {
		return err
	}

	if err := o.Begin(); err != nil {
		return err
	}

	if !exists {
		_, err = o.Insert(obj)
	} else {
		_, err = o.Update(obj)
	}

	if err != nil {
		o.Rollback()
	} else {
		o.Commit()
	}

	return err
}
Ejemplo n.º 3
0
func (od *ormdrv) Insert(obj interface{}) error {
	o := orm.NewOrm()

	err := o.Begin()
	if err != nil {
		return err
	}

	if _, err := o.Insert(obj); err != nil {
		o.Rollback()
	} else {
		o.Commit()
	}

	return err
}
Ejemplo n.º 4
0
func (od *ormdrv) Update(obj interface{}, params ...string) error {
	o := orm.NewOrm()

	err := o.Begin()
	if err != nil {
		return err
	}

	if _, err := o.Update(obj, params...); err != nil {
		o.Rollback()
	} else {
		o.Commit()
	}

	return err
}
Ejemplo n.º 5
0
func (workspace *Workspace) Create(name, description string) (int64, error) {
	o := orm.NewOrm()
	w := Workspace{Name: name, Description: description}

	if err := o.Begin(); err != nil {
		log.Errorf("Transcation error: %s", err.Error())
		return 0, err
	} else {
		if id, e := o.Insert(&w); e != nil {
			log.Errorf("Insert workspace data error: %s", e.Error())

			o.Rollback()
			return 0, e
		} else {
			log.Errorf("Insert worksapce successfully, id is: %d", id)

			o.Commit()
			return id, nil
		}
	}

	return 0, nil
}