Skip to content
/ fsevent Public

Eazy handling Cloud Firestore events on Google Cloud Functions Go Runtime.

License

Notifications You must be signed in to change notification settings

ya5u/fsevent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

fsevent

Eazy handling Cloud Firestore events on Google Cloud Functions Go Runtime.

Description

Cloud Functions events triggered by Cloud Firestore are somewhat complex to handle.
GCP Documentation: Google Cloud Firestore Triggers
Receive fsevent as an event and you can use the same type definition for Cloud Firestore.

features

  • get event types - TypeCreate TypeUpdate or TypeDelete
  • reflect value in event to struct you defined for firestore

Installation

Minimum Go version: Go 1.11

Use go get to install and update:

$ go get -u github.com/ya5u/fsevent

Usage

Example Cloud Functions Code is below

package handler

import (
  "context"
  "time"

  "github.com/ya5u/fsevent"
)

// FsData is defined type for firestore as you like
type FsData struct {
  Name     string     `firestore:"name"`
  Age      int64      `firestore:"age"`
  Birthday *time.Time `firestore:"birthday"`
}

// Handler is the entry point of Cloud Functions triggered by firestore event
func Handler(ctx context.Context, e fsevent.FirestoreEvent) error {
  // get event type
  eventType := e.Type()

  // reflect updated value to struct you defined
  var updated FsData
  err := e.Value.DataTo(&updated)
  if err != nil {
    // error handling
  }

  // reflect old value to struct you defined
  var old FsData
  err = e.OldValue.DataTo(&old)
  if err != nil {
    // error handling
  }
}

TODO

  • support primitive pointer types
  • support Arrays
  • support Maps
  • support References
  • implement method of Value type like firestore.DocumentSnapshot.Data

Licence

MIT

Author

ya5u

About

Eazy handling Cloud Firestore events on Google Cloud Functions Go Runtime.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages