cities

package module
v0.0.0-...-91d0e34 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 11, 2023 License: Unlicense Imports: 6 Imported by: 0

README

Промежуточная аттестация модуля «Go-разработчик»

Cities information service

Сборка
go build cmd/main.go
Пакеты
github.com/go-chi/chi/v5 - маршрутизатор для http
github.com/rs/zerolog - логирование
github.com/spf13/viper - файлы конфигурации
Конфигурация

Файл конфигурации config.yaml в папке config

# Порт сервера
server:
  port: "8080"
  
# Путь к сsv файлу с информацией о городах
csv:
  path: "cities.csv"
Примеры запросов к серверу
Получение информации о городе по его id
GET localhost:8080/769
Добавление новой записи в список городов
POST http://localhost:8080/create
{
  "name": "Изумрудный",
  "region": "Изумрудная область",
  "district": "Изумруд",
  "population": 666666,
  "foundation": 2023
}
Удаление информации о городе по указанному id
DELETE localhost:8080/769
Обновление информации о численности населения города по указанному id
PUT localhost:8080/population/769
{
  "population": 66666666
}
Получение списка городов по указанному региону
GET localhost:8080/region/Самарская%20область
Получение списка городов по указанному округу
GET localhost:8080/district/Приволжский
Получения списка городов по указанному диапазону численности - населения
GET localhost:8080/population/range
{
  "start": 15000,
  "end": 70000
}
Получения списка городов по указанному диапазону года основания
GET localhost:8080/foundation/range
{
  "start" : 900,
  "end" : 1400
}
Пример сsv файла
829,Екатеринбург,Свердловская область,Уральский,1377738,1723
693,Пермь,Пермский край,Приволжский,1000679,1723
643,Омск,Омская область,Сибирский,1154000,1716
321,Новокузнецк,Кемеровская область,Сибирский,547885,1618
606,Нижний Новгород,Нижегородская область,Приволжский,1250615,1221
704,Владивосток,Приморский край,Дальневосточный,592069,1860
222,Иркутск,Иркутская область,Сибирский,587225,1661
121,Волгоград,Волгоградская область,Южный,1021244,1589
1009,Хабаровск,Хабаровский край,Дальневосточный,577668,1858
177,Махачкала,Дагестан,Северо-Кавказский,577990,1844
769,Самара,Самарская область,Приволжский,1164900,1586
771,Тольятти,Самарская область,Приволжский,719484,1737
1002,Ульяновск,Ульяновская область,Приволжский,613793,1648
490,Москва,Москва,Центральный,11514330,1147
380,Краснодар,Краснодарский край,Южный,744933,1793
653,Оренбург,Оренбургская область,Приволжский,570329,1743
744,Ростов-на-Дону,Ростовская область,Южный,1091544,1749
410,Красноярск,Красноярский край,Сибирский,1000000,1628
5,Барнаул,Алтайский край,Сибирский,612091,1730
634,Новосибирск,Новосибирская область,Сибирский,1498921,1893
1109,Ярославль,Ярославская область,Центральный,591486,1010
62,Уфа,Башкортостан,Приволжский,1062300,1574
781,Санкт-Петербург,Санкт-Петербург,Северо-Западный,4848742,1703
989,Тюмень,Тюменская область,Уральский,581758,1586
922,Казань,Татарстан,Приволжский,1143546,1005
159,Воронеж,Воронежская область,Центральный,889989,1586
797,Саратов,Саратовская область,Приволжский,836900,1590
315,Кемерово,Кемеровская область,Сибирский,532884,1918
1058,Челябинск,Челябинская область,Уральский,1130273,1736
993,Ижевск,Удмуртия,Приволжский,628117,1760

Описание промежуточной аттестации

Цель работы

Проверить и закрепить знания, полученные на курсе «Go-разработчик»:

  • основы синтаксиса языка;
  • условные операторы и циклы;
  • работа с файловой системой;
  • структуры данных;
  • сериализация;
  • многопоточность;
  • обмен данными по сети.
Что нужно сделать

Вам нужно разработать сервис, предоставляющий информацию о городах. Данные хранятся в файле. В момент старта сервиса данные из файла кешируются в память, в момент завершения работы сервиса данные перезаписываются обратно в файл.

В каждой строке файла через запятую перечислена информация о городе:

  • id (уникальный номер);
  • name (название города);
  • region (регион);
  • district (округ);
  • population (численность населения);
  • foundation (год основания).

Требуется реализовать сервис имеющий следующий функционал:

  • получение информации о городе по его id;
  • добавление новой записи в список городов;
  • удаление информации о городе по указанному id;
  • обновление информации о численности населения города по указанному id;
  • получение списка городов по указанному региону;
  • получение списка городов по указанному округу;
  • получения списка городов по указанному диапазону численности - населения;
  • получения списка городов по указанному диапазону года основания.

Пример тестовых данных

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func InitLogging

func InitLogging()

Types

type City

type City struct {
	Id         int    `json:"id"`
	Name       string `json:"name"`
	Region     string `json:"region"`
	District   string `json:"district"`
	Population int    `json:"population"`
	Foundation int    `json:"foundation"`
}

type CityRequest

type CityRequest struct {
	Name       string `json:"name"`
	Region     string `json:"region"`
	District   string `json:"district"`
	Population int    `json:"population"`
	Foundation int    `json:"foundation"`
}

type RangeRequest

type RangeRequest struct {
	Start int `json:"start"`
	End   int `json:"end"`
}

type Server

type Server struct {
	// contains filtered or unexported fields
}

func (*Server) Run

func (s *Server) Run(port string, handler http.Handler) error

func (*Server) Shutdown

func (s *Server) Shutdown(ctx context.Context) error

type SetPopulationRequest

type SetPopulationRequest struct {
	Population int `json:"population"`
}

Directories

Path Synopsis
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL