From 43760ba70f58fdccba1bed034a48bee51aeb09bb Mon Sep 17 00:00:00 2001 From: pro100ton Date: Sat, 2 Nov 2024 14:05:56 +0300 Subject: [PATCH] Initial migration --- MANIFEST.md | 10 ++++++++++ README.md | 10 ++++++++++ TODO.md | 5 +++++ go.mod | 3 +++ main.go | 39 +++++++++++++++++++++++++++++++++++++++ main_test.go | 0 main_testdata | 8 ++++++++ 7 files changed, 75 insertions(+) create mode 100644 MANIFEST.md create mode 100644 README.md create mode 100644 TODO.md create mode 100644 go.mod create mode 100644 main.go create mode 100644 main_test.go create mode 100644 main_testdata diff --git a/MANIFEST.md b/MANIFEST.md new file mode 100644 index 0000000..8e865a0 --- /dev/null +++ b/MANIFEST.md @@ -0,0 +1,10 @@ +# Useful links + +## Go links + +- [Project structure](https://go.dev/doc/modules/layout) +- [String literals](https://go.dev/ref/spec#String_literals) + +## Database + +- [Драйвер для работы с postgresql](https://github.com/jackc/pgx/wiki/Getting-started-with-pgx) diff --git a/README.md b/README.md new file mode 100644 index 0000000..06112ae --- /dev/null +++ b/README.md @@ -0,0 +1,10 @@ +# Food entries parser +Задача прострая: упростить процесс создания отчета по еде. + +# Процесс +1. На вход дается отчет еды за день +2. Приложение разбивает по строкам входные данные +3. Пытается распарсить полученную строку + 3.1. В случае успеха формирует объект типа "Объект питания" + 3.2. В случае неуспеха данные склдываются в *кучу*, где ждет ручной обработки +4. Обработанные объекты записываются в базу данных diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..98859a5 --- /dev/null +++ b/TODO.md @@ -0,0 +1,5 @@ +# Общие моменты +- [ ] Написать парсер строк отчета: + - [ ] Разбиение отчета на строки + - [ ] Попробовать написать шаблон разобра строки + - [ ] Разбить данные в структуры diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..fa6e28f --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module git.pro100code.ru/food_parser + +go 1.22.5 diff --git a/main.go b/main.go new file mode 100644 index 0000000..eee886a --- /dev/null +++ b/main.go @@ -0,0 +1,39 @@ +package main + +import ( + "fmt" + "os" + "strings" +) + +type FoodEntry struct { + Name string + Calories float32 +} + +type ReportEntry struct { + Entry FoodEntry + Weight int +} + +type Report struct { + Date string + Food []ReportEntry +} + +func SplitReport(report string) []string { + listOfEntries := strings.Split(report, "\n") + return listOfEntries +} + +func main() { + report, err := os.ReadFile("main_testdata") + if err != nil { + fmt.Print("Something went wrong") + } + str := string(report) + result := SplitReport(str) + for _, element := range result { + fmt.Println("Entry: ", element) + } +} diff --git a/main_test.go b/main_test.go new file mode 100644 index 0000000..e69de29 diff --git a/main_testdata b/main_testdata new file mode 100644 index 0000000..ad51cbd --- /dev/null +++ b/main_testdata @@ -0,0 +1,8 @@ +Кофе с молоком +Две клинских сосиски молочных +4 твоих бутера +2 хурмы +Одно яблоко грени +Грамм 250 горбуши горячего копчения +Мл 250 вина красного сухого +---