Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
ubeydeozdmr committed Nov 13, 2024
2 parents b4d7f87 + a8b9e31 commit 7544e1f
Show file tree
Hide file tree
Showing 9 changed files with 2,173 additions and 998 deletions.
10 changes: 6 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,13 @@ The API uses [turkiyeapi.dev](https://turkiyeapi.dev) as the main domain. But yo

## What's new?

> _Latest update: November 4, 2024_
> _Latest update: November 9, 2024_
- New query parameters like `minArea` and `maxArea` added to the get-all-type routes.
- You can now filter by province name or ID in the Get All Districts route.
- You can now filter by province/district name or ID in Get All Neighborhoods, Get All Villages, Get All Towns routes.
- Postal codes have been added to the provinces & districts. (Experimental feature)
- Improvement about the filtering system.
- New query parameters like `minArea` and `maxArea` added to the get-all-type routes.
- You can now filter by province name or ID in the Get All Districts route.
- You can now filter by province/district name or ID in Get All Neighborhoods, Get All Villages, Get All Towns routes.

## Sources

Expand Down
25 changes: 21 additions & 4 deletions src/v1/controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ exports.getProvinces = (req, res) => {
maxArea,
minAltitude,
maxAltitude,
activatePostalCodes,
postalCode,
isMetropolitan,
offset,
limit,
Expand All @@ -29,6 +31,8 @@ exports.getProvinces = (req, res) => {
maxArea,
minAltitude,
maxAltitude,
activatePostalCodes,
postalCode,
isMetropolitan,
offset,
limit,
Expand All @@ -48,9 +52,14 @@ exports.getProvinces = (req, res) => {
exports.getExactProvince = (req, res) => {
try {
const { id } = req.params;
const { fields, extend } = req.query;
const { fields, extend, activatePostalCodes } = req.query;

const province = Provinces.getExactProvince(id, fields, extend);
const province = Provinces.getExactProvince(
id,
fields,
extend,
activatePostalCodes,
);

return res.send({ status: 'OK', data: province });
} catch (error) {
Expand All @@ -69,6 +78,8 @@ exports.getDistricts = (req, res) => {
maxPopulation,
minArea,
maxArea,
activatePostalCodes,
postalCode,
provinceId,
province,
offset,
Expand All @@ -83,6 +94,8 @@ exports.getDistricts = (req, res) => {
maxPopulation,
minArea,
maxArea,
activatePostalCodes,
postalCode,
provinceId,
province,
offset,
Expand All @@ -103,9 +116,13 @@ exports.getDistricts = (req, res) => {
exports.getExactDistrict = (req, res) => {
try {
const { id } = req.params;
const { fields } = req.query;
const { fields, activatePostalCodes } = req.query;

const district = Districts.getExactDistrict(id, fields);
const district = Districts.getExactDistrict(
id,
fields,
activatePostalCodes,
);

return res.send({ status: 'OK', data: district });
} catch (error) {
Expand Down
19 changes: 16 additions & 3 deletions src/v1/data/Districts.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ exports.getDistricts = function (
maxPopulation = 1000000000,
minArea = 1,
maxArea = 1000000000,
activatePostalCodes,
postalCode,
provinceId,
province,
offset = 0,
Expand All @@ -16,7 +18,10 @@ exports.getDistricts = function (
sort,
) {
try {
let districts = data;
let districts =
activatePostalCodes === 'true'
? data
: data.map(({ postalCode, ...rest }) => rest);

if (!Object.values(arguments).some((item) => item)) {
return districts;
Expand Down Expand Up @@ -75,6 +80,10 @@ exports.getDistricts = function (
});
}

if (postalCode) {
districts = districts.filter((item) => item.postalCode === postalCode);
}

if (provinceId || province) {
console.log(provinceId, province);
if (provinceId && province) {
Expand Down Expand Up @@ -212,7 +221,7 @@ exports.getDistricts = function (
}
};

exports.getExactDistrict = function (id, fields) {
exports.getExactDistrict = function (id, fields, activatePostalCodes) {
try {
if (!isFinite(id)) {
throw {
Expand All @@ -221,7 +230,11 @@ exports.getExactDistrict = function (id, fields) {
};
}

const district = data.find((item) => item.id === +id);
const district = activatePostalCodes
? data.find((item) => item.id === +id)
: data
.map(({ postalCode, ...rest }) => rest)
.find((item) => item.id === +id);

const districtNeighborhoods = neighborhoods
.filter((neighborhood) => neighborhood.districtId === district.id)
Expand Down
36 changes: 30 additions & 6 deletions src/v1/data/Provinces.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,19 @@ exports.getProvinces = function (
maxArea = 1000000000,
minAltitude = 0,
maxAltitude = 10000,
activatePostalCodes,
postalCode,
isMetropolitan,
offset = 0,
limit = 81,
fields,
sort,
) {
try {
let provinces = data;
let provinces =
activatePostalCodes === 'true'
? data
: data.map(({ postalCode, ...rest }) => rest);

provinces.forEach((province) => {
const provinceDistricts = districts
Expand Down Expand Up @@ -112,6 +117,10 @@ exports.getProvinces = function (
});
}

if (activatePostalCodes && postalCode) {
provinces = provinces.filter((item) => item.postalCode === postalCode);
}

if (isMetropolitan) {
if (isMetropolitan === 'true') {
provinces = provinces.filter((item) => item.isMetropolitan === true);
Expand Down Expand Up @@ -227,7 +236,7 @@ exports.getProvinces = function (
}
};

exports.getExactProvince = function (id, fields, extend) {
exports.getExactProvince = function (id, fields, extend, activatePostalCodes) {
try {
if (!isFinite(id)) {
throw {
Expand All @@ -236,15 +245,30 @@ exports.getExactProvince = function (id, fields, extend) {
};
}

const province = data.find((item) => item.id === +id);
const province = activatePostalCodes
? data.find((item) => item.id === +id)
: data
.map(({ postalCode, ...rest }) => rest)
.find((item) => item.id === +id);

const provinceDistricts = districts.filter(
(district) => district.provinceId === province.id,
);

province.districts = provinceDistricts.map(
({ id, name, population, area }) => ({ id, name, population, area }),
);
province.districts = activatePostalCodes
? provinceDistricts.map(({ id, name, population, area, postalCode }) => ({
id,
name,
population,
area,
postalCode,
}))
: provinceDistricts.map(({ id, name, population, area }) => ({
id,
name,
population,
area,
}));

if (extend === 'true') {
province.districts.forEach((district) => {
Expand Down
Loading

0 comments on commit 7544e1f

Please sign in to comment.