/**
Example Entity feed for Google Order Redirect.
**/

package main

import (
	pb "feed/app/generated/google/madden/ingestion"
	"fmt"

	"google.golang.org/protobuf/encoding/protojson"
)

func main() {
	feedJSON := createFeed()
	fmt.Println(feedJSON)
}

func createFeed() string {

	// Create Entity
	entity := &pb.Entity{
		EntityId:  "merchant-id",
		Name:      "Mo's Dinner",
		Telephone: "+14567891234",
		Url:       "http://moesdinner.com",
		Location: &pb.GeoCoordinates{
			Latitude:  41.525588,
			Longitude: -90.507067,
			Addresses: &pb.GeoCoordinates_Address{
				Address: &pb.PostalAddress{
					Country:       "US",
					Locality:      "Mountain View",
					Region:        "CA",
					PostalCode:    "94043",
					StreetAddress: "1600 Amphitheatre Pkwy",
				},
			},
		},
	}

	// Create EntityFeed
	feed := &pb.EntityFeed{
		Data: []*pb.Entity{
			entity,
		},
	}

	// Serialize to JSON string
	marshalOptions := protojson.MarshalOptions{
		UseProtoNames: true,
	}
	jsonBytes, _ := marshalOptions.Marshal(feed)
	return string(jsonBytes)
}
