Passed
Pull Request — development (#102)
by Karl
12:26
created

backend/src/database/seeds/zones-data.seed.ts   A

Complexity

Total Complexity 2
Complexity/F 2

Size

Lines of Code 198
Function Count 1

Duplication

Duplicated Lines 0
Ratio 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 150
dl 0
loc 198
ccs 15
cts 15
cp 1
rs 10
c 0
b 0
f 0
wmc 2
mnd 1
bc 1
fnc 1
bpm 1
cpm 2
noi 1

1 Function

Rating   Name   Duplication   Size   Complexity  
B ZoneSeeder.run 0 188 2
1
import { DataSource } from 'typeorm';
2 7
import { Zone } from '../../zones/entities/zone';
3 7
import { City } from '../../cities/entities/city.entity';
4 7
import { CityName } from '../../cities/types/city.enum';
5
6 7
export default class ZoneSeeder {
7
  async run(connection: DataSource): Promise<void> {
8 9
    if (true) {//process.env.NODE_ENV !== 'production') {
0 ignored issues
show
introduced by
Insert ⏎······
Loading history...
9 9
      const zoneRepo = connection.getRepository(Zone);
10
11 9
      const cityRepo = connection.getRepository(City);
12
13 9
      const cities = await Promise.all([
14
        cityRepo.findOne({ where: { name: CityName.Göteborg } }) ||
15
          cityRepo.save(cityRepo.create({ name: CityName.Göteborg })),
16
17
        cityRepo.findOne({ where: { name: CityName.Karlshamn } }) ||
18
          cityRepo.save(cityRepo.create({ name: CityName.Karlshamn })),
19
20
        cityRepo.findOne({ where: { name: CityName.Jönköping } }) ||
21
          cityRepo.save(cityRepo.create({ name: CityName.Jönköping })),
22
      ]);
23
24 9
      const [goteborg, karlshamn, jonkoping] = cities;
25 9
      const [parking, charging, speed] = ['parking', 'charging', 'speed'] as const;
26
27 9
      await zoneRepo.clear();
28
29
      // Göteborg Zones
30 9
      const gotebergZones = [
31
        // Central Station Parking Zone
32
        {
33
          polygon: [
34
            { lat: 57.7089, lng: 11.9726 },
35
            { lat: 57.7092, lng: 11.9734 },
36
            { lat: 57.7088, lng: 11.9746 },
37
            { lat: 57.7084, lng: 11.9738 },
38
            { lat: 57.7089, lng: 11.9726 },
39
          ],
40
          type: parking,
41
          city: goteborg,
42
          name: 'Central Station P-hus',
43
        },
44
        // Nordstan Shopping Center Parking
45
        {
46
          polygon: [
47
            { lat: 57.7095, lng: 11.9689 },
48
            { lat: 57.7099, lng: 11.9701 },
49
            { lat: 57.7093, lng: 11.9712 },
50
            { lat: 57.7089, lng: 11.97 },
51
            { lat: 57.7095, lng: 11.9689 },
52
          ],
53
          type: parking,
54
          city: goteborg,
55
          name: 'Nordstan P-hus',
56
        },
57
        // Lindholmen Science Park Charging Zone
58
        {
59
          polygon: [
60
            { lat: 57.7066, lng: 11.9384 },
61
            { lat: 57.7069, lng: 11.939 },
62
            { lat: 57.7067, lng: 11.9396 },
63
            { lat: 57.7064, lng: 11.939 },
64
            { lat: 57.7066, lng: 11.9384 },
65
          ],
66
          type: charging,
67
          city: goteborg,
68
          name: 'Lindholmen Laddstation',
69
        },
70
        // Avenyn Speed Zone
71
        {
72
          polygon: [
73
            { lat: 57.7, lng: 11.9753 },
74
            { lat: 57.7047, lng: 11.9745 },
75
            { lat: 57.7048, lng: 11.9757 },
76
            { lat: 57.7001, lng: 11.9765 },
77
            { lat: 57.7, lng: 11.9753 },
78
          ],
79
          type: speed,
80
          city: goteborg,
81
          speedZone: {
82
            speedLimit: 30,
83
          },
84
          name: 'Avenyn Hastighetszon',
85
        },
86
      ];
87
88
      // Karlshamn Zones
89 9
      const karlshamnZones = [
90
        // City Center Parking
91
        {
92
          polygon: [
93
            { lat: 56.1708, lng: 14.8631 },
94
            { lat: 56.1712, lng: 14.8637 },
95
            { lat: 56.1709, lng: 14.8643 },
96
            { lat: 56.1705, lng: 14.8637 },
97
            { lat: 56.1708, lng: 14.8631 },
98
          ],
99
          type: parking,
100
          city: karlshamn,
101
          name: 'Centrum Parkering Karlshamn',
102
        },
103
        // Harbor Charging Station
104
        {
105
          polygon: [
106
            { lat: 56.1657, lng: 14.8607 },
107
            { lat: 56.1659, lng: 14.8612 },
108
            { lat: 56.1657, lng: 14.8616 },
109
            { lat: 56.1655, lng: 14.8611 },
110
            { lat: 56.1657, lng: 14.8607 },
111
          ],
112
          type: charging,
113
          city: karlshamn,
114
          name: 'Hamnen Laddstation',
115
        },
116
        // School Zone Speed Limit
117
        {
118
          polygon: [
119
            { lat: 56.1695, lng: 14.8598 },
120
            { lat: 56.1699, lng: 14.8608 },
121
            { lat: 56.1695, lng: 14.8618 },
122
            { lat: 56.1691, lng: 14.8608 },
123
            { lat: 56.1695, lng: 14.8598 },
124
          ],
125
          type: speed,
126
          city: karlshamn,
127
          speedZone: {
128
            speedLimit: 20,
129
          },
130
          name: 'Skolzon Väggaskolan',
131
        },
132
      ];
133
134
      // Jönköping Zones
135 9
      const jonkopingZones = [
136
        // A6 Shopping Center Parking
137
        {
138
          polygon: [
139
            { lat: 57.7741, lng: 14.2031 },
140
            { lat: 57.7745, lng: 14.2039 },
141
            { lat: 57.7741, lng: 14.2047 },
142
            { lat: 57.7737, lng: 14.2039 },
143
            { lat: 57.7741, lng: 14.2031 },
144
          ],
145
          type: parking,
146
          city: jonkoping,
147
          name: 'A6 Center Parkering',
148
        },
149
        // Central Station Charging
150
        {
151
          polygon: [
152
            { lat: 57.7843, lng: 14.1617 },
153
            { lat: 57.7846, lng: 14.1622 },
154
            { lat: 57.7844, lng: 14.1627 },
155
            { lat: 57.7841, lng: 14.1622 },
156
            { lat: 57.7843, lng: 14.1617 },
157
          ],
158
          type: charging,
159
          city: jonkoping,
160
          name: 'Resecentrum Laddstation',
161
        },
162
        // City Center Speed Zone
163
        {
164
          polygon: [
165
            { lat: 57.7819, lng: 14.1556 },
166
            { lat: 57.7829, lng: 14.1576 },
167
            { lat: 57.7824, lng: 14.1586 },
168
            { lat: 57.7814, lng: 14.1566 },
169
            { lat: 57.7819, lng: 14.1556 },
170
          ],
171
          type: speed,
172
          city: jonkoping,
173
          speedZone: {
174
            speedLimit: 30,
175
          },
176
          name: 'Centrum Hastighetszon Jönköping',
177
        },
178
        // Elmia Exhibition Center Parking
179
        {
180
          polygon: [
181
            { lat: 57.7701, lng: 14.2173 },
182
            { lat: 57.7706, lng: 14.2183 },
183
            { lat: 57.7701, lng: 14.2193 },
184
            { lat: 57.7696, lng: 14.2183 },
185
            { lat: 57.7701, lng: 14.2173 },
186
          ],
187
          type: parking,
188
          city: jonkoping,
189
          name: 'Elmia Parkering',
190
        },
191
      ];
192
193
      // Save all zones
194 9
      await zoneRepo.save([...gotebergZones, ...karlshamnZones, ...jonkopingZones]);
195
    }
196
  }
197
}
198