MCPcopy
hub / github.com/hasura/graphql-engine / squashDown

Method squashDown

cli/migrate/migrate.go:890–953  ·  view source on GitHub ↗
(v1 uint64, v2 int64, ret chan<- interface{})

Source from the content-addressed store, hash-verified

888}
889
890func (m *Migrate) squashDown(v1 uint64, v2 int64, ret chan<- interface{}) {
891 defer close(ret)
892 // get the last version from the source driver
893 var err error
894 var from uint64
895 if v2 == -1 {
896 from, err = m.sourceDrv.GetLocalVersion()
897 if err != nil {
898 ret <- err
899 return
900 }
901 } else {
902 from = uint64(v2)
903 }
904
905 for {
906 if m.stop() {
907 return
908 }
909
910 if from < v1 {
911 return
912 }
913
914 prev, err := m.sourceDrv.Prev(from)
915 if errors.Is(err, fs.ErrNotExist) {
916 migr, err := m.newMigration(from, -1)
917 if err != nil {
918 ret <- err
919 return
920 }
921 ret <- migr
922 go func(migr *Migration, m *Migrate) {
923 if err := migr.Buffer(); err != nil {
924 m.Logger.Error(err)
925 }
926 }(migr, m)
927 return
928 } else if err != nil {
929 ret <- err
930 return
931 }
932
933 err = m.versionDownExists(from)
934 if err == nil {
935 migr, err := m.newMigration(from, int64(prev))
936 if err != nil {
937 ret <- err
938 return
939 }
940
941 ret <- migr
942 go func(migr *Migration, m *Migrate) {
943 if err := migr.Buffer(); err != nil {
944 m.Logger.Error(err)
945 }
946 }(migr, m)
947 } else {

Callers 1

SquashMethod · 0.95

Calls 8

stopMethod · 0.95
newMigrationMethod · 0.95
versionDownExistsMethod · 0.95
closeFunction · 0.85
BufferMethod · 0.80
GetLocalVersionMethod · 0.65
PrevMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected