You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.3 KiB
58 lines
1.3 KiB
package customer
|
|
|
|
import (
|
|
"context"
|
|
"strconv"
|
|
"time"
|
|
|
|
driver "github.com/arangodb/go-driver"
|
|
)
|
|
|
|
const (
|
|
DateTemplate string = "2006-01-02" // Шаблон даты
|
|
TimeTemplate string = "15:04:05" // Шаблон времени
|
|
StampTemplate string = DateTemplate + " " + TimeTemplate // Шаблон метки времени
|
|
DateTemplatePast string = "1900-01-01" + " " + TimeTemplate // Далекое прошлое
|
|
)
|
|
|
|
type Row struct {
|
|
ctx context.Context
|
|
collection driver.Collection
|
|
database driver.Database
|
|
key string
|
|
}
|
|
|
|
// Базовые поля
|
|
type SimpleRow struct {
|
|
Row
|
|
ID string `json:"id"`
|
|
CreatedAt string `json:"created_at"`
|
|
UpdatedAt string `json:"updated_at"`
|
|
DeletedAt string `json:"deleted_at"`
|
|
}
|
|
|
|
func NewSimpleRow(ctx context.Context, database driver.Database, collection driver.Collection) *SimpleRow {
|
|
now := time.Now()
|
|
nowStr := now.Format(StampTemplate)
|
|
key := strconv.Itoa(now.Nanosecond())
|
|
|
|
return &SimpleRow{
|
|
Row: Row{
|
|
ctx: ctx,
|
|
collection: collection,
|
|
database: database,
|
|
key: key,
|
|
},
|
|
ID: key,
|
|
CreatedAt: nowStr,
|
|
UpdatedAt: nowStr,
|
|
DeletedAt: DateTemplatePast,
|
|
}
|
|
}
|
|
|
|
// Удаление
|
|
func (r *SimpleRow) Delete() error {
|
|
_, err := r.collection.RemoveDocument(r.ctx, r.key)
|
|
|
|
return err
|
|
}
|
|
|