Initial migration
This commit is contained in:
commit
43760ba70f
7 changed files with 75 additions and 0 deletions
10
MANIFEST.md
Normal file
10
MANIFEST.md
Normal 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
10
README.md
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# Food entries parser
|
||||||
|
Задача прострая: упростить процесс создания отчета по еде.
|
||||||
|
|
||||||
|
# Процесс
|
||||||
|
1. На вход дается отчет еды за день
|
||||||
|
2. Приложение разбивает по строкам входные данные
|
||||||
|
3. Пытается распарсить полученную строку
|
||||||
|
3.1. В случае успеха формирует объект типа "Объект питания"
|
||||||
|
3.2. В случае неуспеха данные склдываются в *кучу*, где ждет ручной обработки
|
||||||
|
4. Обработанные объекты записываются в базу данных
|
5
TODO.md
Normal file
5
TODO.md
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# Общие моменты
|
||||||
|
- [ ] Написать парсер строк отчета:
|
||||||
|
- [ ] Разбиение отчета на строки
|
||||||
|
- [ ] Попробовать написать шаблон разобра строки
|
||||||
|
- [ ] Разбить данные в структуры
|
3
go.mod
Normal file
3
go.mod
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
module git.pro100code.ru/food_parser
|
||||||
|
|
||||||
|
go 1.22.5
|
39
main.go
Normal file
39
main.go
Normal 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
0
main_test.go
Normal file
8
main_testdata
Normal file
8
main_testdata
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
Кофе с молоком
|
||||||
|
Две клинских сосиски молочных
|
||||||
|
4 твоих бутера
|
||||||
|
2 хурмы
|
||||||
|
Одно яблоко грени
|
||||||
|
Грамм 250 горбуши горячего копчения
|
||||||
|
Мл 250 вина красного сухого
|
||||||
|
---
|
Loading…
Reference in a new issue