compareSequences compares sequences between two schemas.
(diff *MetadataDiff, schemaName string, oldSchema, newSchema *model.SchemaMetadata)
| 1846 | |
| 1847 | // compareSequences compares sequences between two schemas. |
| 1848 | func compareSequences(diff *MetadataDiff, schemaName string, oldSchema, newSchema *model.SchemaMetadata) { |
| 1849 | // Get sequences from proto since there's no ListSequenceNames method |
| 1850 | oldSeqMap := make(map[string]*storepb.SequenceMetadata) |
| 1851 | for _, seq := range oldSchema.GetProto().Sequences { |
| 1852 | if !seq.GetSkipDump() { |
| 1853 | oldSeqMap[seq.Name] = seq |
| 1854 | } |
| 1855 | } |
| 1856 | |
| 1857 | newSeqMap := make(map[string]*storepb.SequenceMetadata) |
| 1858 | for _, seq := range newSchema.GetProto().Sequences { |
| 1859 | if !seq.GetSkipDump() { |
| 1860 | newSeqMap[seq.Name] = seq |
| 1861 | } |
| 1862 | } |
| 1863 | |
| 1864 | // Check for dropped sequences |
| 1865 | for seqName, oldSeq := range oldSeqMap { |
| 1866 | if _, exists := newSeqMap[seqName]; !exists { |
| 1867 | diff.SequenceChanges = append(diff.SequenceChanges, &SequenceDiff{ |
| 1868 | Action: MetadataDiffActionDrop, |
| 1869 | SchemaName: schemaName, |
| 1870 | SequenceName: seqName, |
| 1871 | OldSequence: oldSeq, |
| 1872 | }) |
| 1873 | } |
| 1874 | } |
| 1875 | |
| 1876 | // Check for new and modified sequences |
| 1877 | for seqName, newSeq := range newSeqMap { |
| 1878 | if oldSeq, exists := oldSeqMap[seqName]; !exists { |
| 1879 | diff.SequenceChanges = append(diff.SequenceChanges, &SequenceDiff{ |
| 1880 | Action: MetadataDiffActionCreate, |
| 1881 | SchemaName: schemaName, |
| 1882 | SequenceName: seqName, |
| 1883 | NewSequence: newSeq, |
| 1884 | }) |
| 1885 | } else if !sequencesEqual(oldSeq, newSeq) { |
| 1886 | diff.SequenceChanges = append(diff.SequenceChanges, &SequenceDiff{ |
| 1887 | Action: MetadataDiffActionAlter, |
| 1888 | SchemaName: schemaName, |
| 1889 | SequenceName: seqName, |
| 1890 | OldSequence: oldSeq, |
| 1891 | NewSequence: newSeq, |
| 1892 | }) |
| 1893 | } |
| 1894 | } |
| 1895 | } |
| 1896 | |
| 1897 | func sequencesEqual(oldSeq, newSeq *storepb.SequenceMetadata) bool { |
| 1898 | return oldSeq.DataType == newSeq.DataType && |
no test coverage detected