Passed
Branch test/scrutinizer-config-backen... (e3cdc3)
by Karl
06:16
created

ZoneSeeder.run   B

Complexity

Conditions 2

Size

Total Lines 188
Code Lines 144

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 1
CRAP Score 5.0053

Importance

Changes 0
Metric Value
cc 2
eloc 144
dl 0
loc 188
ccs 1
cts 11
cp 0.0909
crap 5.0053
rs 7
c 0
b 0
f 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

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