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

Complexity

Total Complexity 2
Complexity/F 2

Size

Lines of Code 200
Function Count 1

Duplication

Duplicated Lines 0
Ratio 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 152
dl 0
loc 200
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 0

1 Function

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