Initial migration

This commit is contained in:
pro100ton 2024-11-02 14:05:56 +03:00
commit 43760ba70f
7 changed files with 75 additions and 0 deletions

10
MANIFEST.md Normal file
View file

@ -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)

10
README.md Normal file
View file

@ -0,0 +1,10 @@
# Food entries parser
Задача прострая: упростить процесс создания отчета по еде.
# Процесс
1. На вход дается отчет еды за день
2. Приложение разбивает по строкам входные данные
3. Пытается распарсить полученную строку
3.1. В случае успеха формирует объект типа "Объект питания"
3.2. В случае неуспеха данные склдываются в *кучу*, где ждет ручной обработки
4. Обработанные объекты записываются в базу данных

5
TODO.md Normal file
View file

@ -0,0 +1,5 @@
# Общие моменты
- [ ] Написать парсер строк отчета:
- [ ] Разбиение отчета на строки
- [ ] Попробовать написать шаблон разобра строки
- [ ] Разбить данные в структуры

3
go.mod Normal file
View file

@ -0,0 +1,3 @@
module git.pro100code.ru/food_parser
go 1.22.5

39
main.go Normal file
View file

@ -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)
}
}

0
main_test.go Normal file
View file

8
main_testdata Normal file
View file

@ -0,0 +1,8 @@
Кофе с молоком
Две клинских сосиски молочных
4 твоих бутера
2 хурмы
Одно яблоко грени
Грамм 250 горбуши горячего копчения
Мл 250 вина красного сухого
---