initial commit

This commit is contained in:
Gitea
2024-01-24 16:12:16 +03:00
commit 5b5dc2165c
23 changed files with 1846 additions and 0 deletions

View File

@ -0,0 +1,75 @@
// Code generated by the FlatBuffers compiler. DO NOT EDIT.
package fbs
import (
flatbuffers "github.com/google/flatbuffers/go"
)
type Category struct {
_tab flatbuffers.Table
}
func GetRootAsCategory(buf []byte, offset flatbuffers.UOffsetT) *Category {
n := flatbuffers.GetUOffsetT(buf[offset:])
x := &Category{}
x.Init(buf, n+offset)
return x
}
func FinishCategoryBuffer(builder *flatbuffers.Builder, offset flatbuffers.UOffsetT) {
builder.Finish(offset)
}
func GetSizePrefixedRootAsCategory(buf []byte, offset flatbuffers.UOffsetT) *Category {
n := flatbuffers.GetUOffsetT(buf[offset+flatbuffers.SizeUint32:])
x := &Category{}
x.Init(buf, n+offset+flatbuffers.SizeUint32)
return x
}
func FinishSizePrefixedCategoryBuffer(builder *flatbuffers.Builder, offset flatbuffers.UOffsetT) {
builder.FinishSizePrefixed(offset)
}
func (rcv *Category) Init(buf []byte, i flatbuffers.UOffsetT) {
rcv._tab.Bytes = buf
rcv._tab.Pos = i
}
func (rcv *Category) Table() flatbuffers.Table {
return rcv._tab
}
func (rcv *Category) Id() int64 {
o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
if o != 0 {
return rcv._tab.GetInt64(o + rcv._tab.Pos)
}
return 0
}
func (rcv *Category) MutateId(n int64) bool {
return rcv._tab.MutateInt64Slot(4, n)
}
func (rcv *Category) Name() []byte {
o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
if o != 0 {
return rcv._tab.ByteVector(o + rcv._tab.Pos)
}
return nil
}
func CategoryStart(builder *flatbuffers.Builder) {
builder.StartObject(2)
}
func CategoryAddId(builder *flatbuffers.Builder, id int64) {
builder.PrependInt64Slot(0, id, 0)
}
func CategoryAddName(builder *flatbuffers.Builder, name flatbuffers.UOffsetT) {
builder.PrependUOffsetTSlot(1, flatbuffers.UOffsetT(name), 0)
}
func CategoryEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
return builder.EndObject()
}

View File

@ -0,0 +1,216 @@
// Code generated by the FlatBuffers compiler. DO NOT EDIT.
package fbs
import (
flatbuffers "github.com/google/flatbuffers/go"
)
type GoodItem struct {
_tab flatbuffers.Table
}
func GetRootAsGoodItem(buf []byte, offset flatbuffers.UOffsetT) *GoodItem {
n := flatbuffers.GetUOffsetT(buf[offset:])
x := &GoodItem{}
x.Init(buf, n+offset)
return x
}
func FinishGoodItemBuffer(builder *flatbuffers.Builder, offset flatbuffers.UOffsetT) {
builder.Finish(offset)
}
func GetSizePrefixedRootAsGoodItem(buf []byte, offset flatbuffers.UOffsetT) *GoodItem {
n := flatbuffers.GetUOffsetT(buf[offset+flatbuffers.SizeUint32:])
x := &GoodItem{}
x.Init(buf, n+offset+flatbuffers.SizeUint32)
return x
}
func FinishSizePrefixedGoodItemBuffer(builder *flatbuffers.Builder, offset flatbuffers.UOffsetT) {
builder.FinishSizePrefixed(offset)
}
func (rcv *GoodItem) Init(buf []byte, i flatbuffers.UOffsetT) {
rcv._tab.Bytes = buf
rcv._tab.Pos = i
}
func (rcv *GoodItem) Table() flatbuffers.Table {
return rcv._tab
}
func (rcv *GoodItem) Sku() []byte {
o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
if o != 0 {
return rcv._tab.ByteVector(o + rcv._tab.Pos)
}
return nil
}
func (rcv *GoodItem) Photo() []byte {
o := flatbuffers.UOffsetT(rcv._tab.Offset(6))
if o != 0 {
return rcv._tab.ByteVector(o + rcv._tab.Pos)
}
return nil
}
func (rcv *GoodItem) Name() []byte {
o := flatbuffers.UOffsetT(rcv._tab.Offset(8))
if o != 0 {
return rcv._tab.ByteVector(o + rcv._tab.Pos)
}
return nil
}
func (rcv *GoodItem) Description() []byte {
o := flatbuffers.UOffsetT(rcv._tab.Offset(10))
if o != 0 {
return rcv._tab.ByteVector(o + rcv._tab.Pos)
}
return nil
}
func (rcv *GoodItem) Category() []byte {
o := flatbuffers.UOffsetT(rcv._tab.Offset(12))
if o != 0 {
return rcv._tab.ByteVector(o + rcv._tab.Pos)
}
return nil
}
func (rcv *GoodItem) Type() []byte {
o := flatbuffers.UOffsetT(rcv._tab.Offset(14))
if o != 0 {
return rcv._tab.ByteVector(o + rcv._tab.Pos)
}
return nil
}
func (rcv *GoodItem) Producer() []byte {
o := flatbuffers.UOffsetT(rcv._tab.Offset(16))
if o != 0 {
return rcv._tab.ByteVector(o + rcv._tab.Pos)
}
return nil
}
func (rcv *GoodItem) Pack() int16 {
o := flatbuffers.UOffsetT(rcv._tab.Offset(18))
if o != 0 {
return rcv._tab.GetInt16(o + rcv._tab.Pos)
}
return 0
}
func (rcv *GoodItem) MutatePack(n int16) bool {
return rcv._tab.MutateInt16Slot(18, n)
}
func (rcv *GoodItem) Step() int16 {
o := flatbuffers.UOffsetT(rcv._tab.Offset(20))
if o != 0 {
return rcv._tab.GetInt16(o + rcv._tab.Pos)
}
return 0
}
func (rcv *GoodItem) MutateStep(n int16) bool {
return rcv._tab.MutateInt16Slot(20, n)
}
func (rcv *GoodItem) Price() float32 {
o := flatbuffers.UOffsetT(rcv._tab.Offset(22))
if o != 0 {
return rcv._tab.GetFloat32(o + rcv._tab.Pos)
}
return 0.0
}
func (rcv *GoodItem) MutatePrice(n float32) bool {
return rcv._tab.MutateFloat32Slot(22, n)
}
func (rcv *GoodItem) Tariff() float32 {
o := flatbuffers.UOffsetT(rcv._tab.Offset(24))
if o != 0 {
return rcv._tab.GetFloat32(o + rcv._tab.Pos)
}
return 0.0
}
func (rcv *GoodItem) MutateTariff(n float32) bool {
return rcv._tab.MutateFloat32Slot(24, n)
}
func (rcv *GoodItem) Cart() int64 {
o := flatbuffers.UOffsetT(rcv._tab.Offset(26))
if o != 0 {
return rcv._tab.GetInt64(o + rcv._tab.Pos)
}
return 0
}
func (rcv *GoodItem) MutateCart(n int64) bool {
return rcv._tab.MutateInt64Slot(26, n)
}
func (rcv *GoodItem) Stock() int16 {
o := flatbuffers.UOffsetT(rcv._tab.Offset(28))
if o != 0 {
return rcv._tab.GetInt16(o + rcv._tab.Pos)
}
return 0
}
func (rcv *GoodItem) MutateStock(n int16) bool {
return rcv._tab.MutateInt16Slot(28, n)
}
func GoodItemStart(builder *flatbuffers.Builder) {
builder.StartObject(13)
}
func GoodItemAddSku(builder *flatbuffers.Builder, sku flatbuffers.UOffsetT) {
builder.PrependUOffsetTSlot(0, flatbuffers.UOffsetT(sku), 0)
}
func GoodItemAddPhoto(builder *flatbuffers.Builder, photo flatbuffers.UOffsetT) {
builder.PrependUOffsetTSlot(1, flatbuffers.UOffsetT(photo), 0)
}
func GoodItemAddName(builder *flatbuffers.Builder, name flatbuffers.UOffsetT) {
builder.PrependUOffsetTSlot(2, flatbuffers.UOffsetT(name), 0)
}
func GoodItemAddDescription(builder *flatbuffers.Builder, description flatbuffers.UOffsetT) {
builder.PrependUOffsetTSlot(3, flatbuffers.UOffsetT(description), 0)
}
func GoodItemAddCategory(builder *flatbuffers.Builder, category flatbuffers.UOffsetT) {
builder.PrependUOffsetTSlot(4, flatbuffers.UOffsetT(category), 0)
}
func GoodItemAddType(builder *flatbuffers.Builder, type_ flatbuffers.UOffsetT) {
builder.PrependUOffsetTSlot(5, flatbuffers.UOffsetT(type_), 0)
}
func GoodItemAddProducer(builder *flatbuffers.Builder, producer flatbuffers.UOffsetT) {
builder.PrependUOffsetTSlot(6, flatbuffers.UOffsetT(producer), 0)
}
func GoodItemAddPack(builder *flatbuffers.Builder, pack int16) {
builder.PrependInt16Slot(7, pack, 0)
}
func GoodItemAddStep(builder *flatbuffers.Builder, step int16) {
builder.PrependInt16Slot(8, step, 0)
}
func GoodItemAddPrice(builder *flatbuffers.Builder, price float32) {
builder.PrependFloat32Slot(9, price, 0.0)
}
func GoodItemAddTariff(builder *flatbuffers.Builder, tariff float32) {
builder.PrependFloat32Slot(10, tariff, 0.0)
}
func GoodItemAddCart(builder *flatbuffers.Builder, cart int64) {
builder.PrependInt64Slot(11, cart, 0)
}
func GoodItemAddStock(builder *flatbuffers.Builder, stock int16) {
builder.PrependInt16Slot(12, stock, 0)
}
func GoodItemEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
return builder.EndObject()
}

View File

@ -0,0 +1,75 @@
// Code generated by the FlatBuffers compiler. DO NOT EDIT.
package fbs
import (
flatbuffers "github.com/google/flatbuffers/go"
)
type GoodItems struct {
_tab flatbuffers.Table
}
func GetRootAsGoodItems(buf []byte, offset flatbuffers.UOffsetT) *GoodItems {
n := flatbuffers.GetUOffsetT(buf[offset:])
x := &GoodItems{}
x.Init(buf, n+offset)
return x
}
func FinishGoodItemsBuffer(builder *flatbuffers.Builder, offset flatbuffers.UOffsetT) {
builder.Finish(offset)
}
func GetSizePrefixedRootAsGoodItems(buf []byte, offset flatbuffers.UOffsetT) *GoodItems {
n := flatbuffers.GetUOffsetT(buf[offset+flatbuffers.SizeUint32:])
x := &GoodItems{}
x.Init(buf, n+offset+flatbuffers.SizeUint32)
return x
}
func FinishSizePrefixedGoodItemsBuffer(builder *flatbuffers.Builder, offset flatbuffers.UOffsetT) {
builder.FinishSizePrefixed(offset)
}
func (rcv *GoodItems) Init(buf []byte, i flatbuffers.UOffsetT) {
rcv._tab.Bytes = buf
rcv._tab.Pos = i
}
func (rcv *GoodItems) Table() flatbuffers.Table {
return rcv._tab
}
func (rcv *GoodItems) Items(obj *GoodItem, j int) bool {
o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
if o != 0 {
x := rcv._tab.Vector(o)
x += flatbuffers.UOffsetT(j) * 4
x = rcv._tab.Indirect(x)
obj.Init(rcv._tab.Bytes, x)
return true
}
return false
}
func (rcv *GoodItems) ItemsLength() int {
o := flatbuffers.UOffsetT(rcv._tab.Offset(4))
if o != 0 {
return rcv._tab.VectorLen(o)
}
return 0
}
func GoodItemsStart(builder *flatbuffers.Builder) {
builder.StartObject(1)
}
func GoodItemsAddItems(builder *flatbuffers.Builder, items flatbuffers.UOffsetT) {
builder.PrependUOffsetTSlot(0, flatbuffers.UOffsetT(items), 0)
}
func GoodItemsStartItemsVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT {
return builder.StartVector(4, numElems, 4)
}
func GoodItemsEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT {
return builder.EndObject()
}

View File

@ -0,0 +1,140 @@
package fbs
import (
"sync"
"git.loyso.art/frx/eway/internal/entity"
flatbuffers "github.com/google/flatbuffers/go"
)
var builderPool = sync.Pool{
New: func() any {
builder := flatbuffers.NewBuilder(1024)
return builder
},
}
func getBuilder() *flatbuffers.Builder {
builder := builderPool.Get().(*flatbuffers.Builder)
return builder
}
func putBuilder(builder *flatbuffers.Builder) {
builder.Reset()
builderPool.Put(builder)
}
func MakeDomainGoodItems(in ...entity.GoodsItem) []byte {
builder := getBuilder()
defer putBuilder(builder)
offsets := make([]flatbuffers.UOffsetT, 0, len(in))
for _, item := range in {
inFB := makeDomainGoodItem(builder, item)
offsets = append(offsets, inFB)
}
GoodItemsStartItemsVector(builder, len(offsets))
for i := len(offsets) - 1; i >= 0; i-- {
builder.PrependUOffsetT(offsets[i])
}
goodItemsVec := builder.EndVector(len(offsets))
GoodItemsStart(builder)
GoodItemsAddItems(builder, goodItemsVec)
out := GoodItemsEnd(builder)
builder.Finish(out)
return builder.FinishedBytes()
}
func MakeDomainGoodItemFinished(in entity.GoodsItem) []byte {
builder := getBuilder()
defer putBuilder(builder)
item := makeDomainGoodItem(builder, in)
builder.Finish(item)
return builder.FinishedBytes()
}
func makeDomainGoodItem(builder *flatbuffers.Builder, in entity.GoodsItem) flatbuffers.UOffsetT {
sku := builder.CreateString(in.Articul)
photo := builder.CreateString(in.Photo)
name := builder.CreateString(in.Name)
desc := builder.CreateString(in.Description)
var cat flatbuffers.UOffsetT
if in.Category != "" {
cat = builder.CreateString(in.Category)
}
t := builder.CreateString(in.Type)
producer := builder.CreateString(in.Producer)
GoodItemStart(builder)
GoodItemAddSku(builder, sku)
GoodItemAddPhoto(builder, photo)
GoodItemAddName(builder, name)
GoodItemAddDescription(builder, desc)
if in.Category != "" {
GoodItemAddCategory(builder, cat)
}
GoodItemAddType(builder, t)
GoodItemAddProducer(builder, producer)
GoodItemAddPack(builder, int16(in.Pack))
GoodItemAddStep(builder, int16(in.Step))
GoodItemAddPrice(builder, float32(in.Price))
GoodItemAddTariff(builder, float32(in.TariffPrice))
GoodItemAddCart(builder, int64(in.Cart))
GoodItemAddStock(builder, int16(in.Stock))
return GoodItemEnd(builder)
}
func ParseGoodsItem(data []byte) (item entity.GoodsItem) {
itemFBS := GetRootAsGoodItem(data, 0)
item.Articul = string(itemFBS.Sku())
item.Photo = string(itemFBS.Photo())
item.Name = string(itemFBS.Name())
item.Description = string(itemFBS.Description())
if value := itemFBS.Category(); value != nil {
item.Category = string(value)
}
item.Type = string(itemFBS.Type())
item.Producer = string(itemFBS.Producer())
item.Pack = int(itemFBS.Pack())
item.Step = int(itemFBS.Step())
item.Price = float64(itemFBS.Price())
item.TariffPrice = float64(itemFBS.Tariff())
item.Cart = itemFBS.Cart()
item.Stock = int(itemFBS.Stock())
return item
}
func ParseCategory(data []byte) (category entity.Category) {
categoryFBS := GetRootAsCategory(data, 0)
category.ID = categoryFBS.Id()
category.Name = string(categoryFBS.Name())
return category
}
func MakeCategoryFinished(category entity.Category) []byte {
builder := getBuilder()
defer putBuilder(builder)
offset := makeCategory(builder, category)
builder.Finish(offset)
return builder.FinishedBytes()
}
func makeCategory(builder *flatbuffers.Builder, category entity.Category) flatbuffers.UOffsetT {
name := builder.CreateString(category.Name)
CategoryStart(builder)
CategoryAddId(builder, category.ID)
CategoryAddName(builder, name)
return CategoryEnd(builder)
}