package common

import (
	"errors"
	"time"
)

type Slice []interface{}

// GetString 获取string
func (that Slice) GetString(key int, err ...*Error) string {
	if len(err) != 0 {
		err[0].SetError(nil)
	}
	return ObjToStr((that)[key])
}

func (that Slice) GetTime(key int, err ...*Error) *time.Time {

	v := ObjToTime((that)[key], err...)
	return v

}

// GetInt 获取Int
func (that Slice) GetInt(key int, err ...*Error) int {
	v := ObjToInt((that)[key], err...)
	return v
}

// GetInt64 获取Int
func (that Slice) GetInt64(key int, err ...*Error) int64 {
	v := ObjToInt64((that)[key], err...)

	return v
}

// GetCeilInt64 获取向上取整Int64
func (that Slice) GetCeilInt64(key int, err ...*Error) int64 {
	v := ObjToCeilInt64((that)[key], err...)
	return v

}

// GetCeilInt 获取向上取整Int
func (that Slice) GetCeilInt(key int, err ...*Error) int {
	v := ObjToCeilInt((that)[key], err...)
	return v

}

// GetCeilFloat64 获取向上取整float64
func (that Slice) GetCeilFloat64(key int, err ...*Error) float64 {
	v := ObjToCeilFloat64((that)[key], err...)
	return v

}

// GetFloat64 获取Float64
func (that Slice) GetFloat64(key int, err ...*Error) float64 {
	v := ObjToFloat64((that)[key], err...)

	return v
}

func (that Slice) GetSlice(key int, err ...*Error) Slice {
	v := ObjToSlice((that)[key], err...)
	return v
}

func (that Slice) GetBool(key int, err ...*Error) bool {

	//var v Slice
	v := ObjToBool((that)[key], err...)

	return v

}

func (that Slice) GetMap(key int, err ...*Error) Map {
	//var v Map
	v := ObjToMap((that)[key], err...)
	return v
}

func (that Slice) Get(key int, err ...*Error) interface{} {

	if key < len(that) {
		return that[key]
	}
	e := errors.New("没有存储key及对应的数据")
	if len(err) != 0 {
		err[0].SetError(e)
	}
	return nil
}

func (that Slice) Put(key int, value interface{}) {
	that[key] = value
}

func (that Slice) ToJsonString() string {
	return ObjToStr(that)
}
