95 lines
3.5 KiB
Markdown
95 lines
3.5 KiB
Markdown
# Remaining Questions (02-q)
|
||
|
||
## EnvValue type design
|
||
|
||
1. **Предложенный тип `EnvValue`:**
|
||
```go
|
||
type EnvValue struct {
|
||
Type string `json:"type"` // "string", "number", "bool", "json"
|
||
Value any `json:"value"`
|
||
}
|
||
```
|
||
|
||
**Вопросы:**
|
||
- Достаточно ли типов: `string`, `number`, `bool`, `json`?
|
||
- Или нужны дополнительные (например, `array`, `secret`)?
|
||
- Нужно ли шифрование для sensitive values (passwords, tokens)?
|
||
|
||
Answer: нужны все типы для того чтобы создать валидный .env файл на их основе
|
||
|
||
---
|
||
|
||
## Config creation during init
|
||
|
||
2. **При `aevs init` — что делать если `aevs.yaml` уже существует?**
|
||
- (a) Ошибка: "Config already exists"
|
||
- (b) Перезаписать с предупреждением
|
||
- (c) Merge: добавить новые env файлы в существующий конфиг
|
||
|
||
Answer: (c) если эта логика не предусмотрена в другой команде, (a) если у нас уже существует команда для добавления новых env файлов
|
||
|
||
---
|
||
|
||
## Version timestamp uniqueness
|
||
|
||
3. **Timestamp как ID версии:**
|
||
- Unix timestamp в секундах может не быть уникальным (два пользователя создают версию в одну секунду)
|
||
- Использовать миллисекунды?
|
||
- Или сервер должен гарантировать уникальность и возвращать корректный ts?
|
||
|
||
Answer: используй nanosec
|
||
|
||
---
|
||
|
||
## Sync without changes
|
||
|
||
4. **Что делать если при sync нет изменений (local = remote)?**
|
||
- (a) Сообщение "Already up to date" и ничего не делать
|
||
- (b) Всё равно создавать новую версию
|
||
- (c) Опционально через флаг `--force`
|
||
|
||
Answer: (a)
|
||
---
|
||
|
||
## Delete confirmation
|
||
|
||
5. **При `aevs project remove` — как именно подтверждать удаление?**
|
||
- Ввести полное имя проекта?
|
||
- Ввести "DELETE" или подобное ключевое слово?
|
||
- Флаг `--force` для skip confirmation?
|
||
|
||
Answer: ввести полное имя проекта (в промпте напиши его, чтобы нужно было перепечатать просто)
|
||
|
||
---
|
||
|
||
## parseLocals edge cases
|
||
|
||
6. **Какие файлы считать env файлами?**
|
||
- Только `*.env.*` или также просто `.env`? --> `.env` тоже;
|
||
- Игнорировать `.env.example`, `.env.sample`? --> не игнорировать;
|
||
- Игнорировать файлы в `node_modules/`, `.git/`? --> игнорировать;
|
||
---
|
||
|
||
## API error responses
|
||
|
||
7. **Формат ошибок от сервера:**
|
||
```json
|
||
{
|
||
"error": "Project not found",
|
||
"code": "PROJECT_NOT_FOUND"
|
||
}
|
||
```
|
||
Или другой формат?
|
||
Answer: этот формат норм
|
||
|
||
---
|
||
|
||
## Concurrent sync
|
||
|
||
8. **Если два пользователя делают sync одновременно:**
|
||
- Оба создадут новые версии?
|
||
- Нужен ли механизм блокировки (optimistic locking)?
|
||
- Или это решается на уровне merge?
|
||
|
||
Answer: оба создают новые версии;
|