Some checks failed
Build Push and Restart Compose / deploy (push) Failing after 1m47s
- `github.com/lib/pq` PostgreSQL 드라이버 vendor 디렉토리에 추가. - PostgreSQL 관련 내부 패키지(`pqsql`, `proto`, `pqtime`, `pgpass`, `pgservice`, `pqutil`) 구현: - SQL 어휘 처리, 프로토콜 상수 및 구조 정의, 시간 파서/포맷터(`Parse`, `Format`). - `.pgpass` 파일 및 `pg_service.conf` 관리 기능 추가. - 파일/사용자 권한 검증 및 플랫폼별 사용자 정보 조회 기능 포함. - 데이터베이스 초기화 로직 추가 (`services/db.go`): - PostgreSQL 연결 설정 및 초기 스키마 생성. - 자동매매 관련 DB 레포지토리(`services/autotrade_repo.go`) 구현: - 자동매매 규칙 및 포지션 관리 로직 추가 (`dbInsertRule`, `dbLoadRules` 등).
38 lines
1.0 KiB
Go
38 lines
1.0 KiB
Go
package pqtime
|
|
|
|
import (
|
|
"sync"
|
|
"time"
|
|
)
|
|
|
|
// The location cache caches the time zones typically used by the client.
|
|
type locationCache struct {
|
|
cache map[int]*time.Location
|
|
lock sync.Mutex
|
|
}
|
|
|
|
// All connections share the same list of timezones. Benchmarking shows that
|
|
// about 5% speed could be gained by putting the cache in the connection and
|
|
// losing the mutex, at the cost of a small amount of memory and a somewhat
|
|
// significant increase in code complexity.
|
|
var globalLocationCache = &locationCache{cache: make(map[int]*time.Location)}
|
|
|
|
func Reset() {
|
|
globalLocationCache = &locationCache{cache: make(map[int]*time.Location)}
|
|
}
|
|
|
|
// Returns the cached timezone for the specified offset, creating and caching
|
|
// it if necessary.
|
|
func (c *locationCache) getLocation(offset int) *time.Location {
|
|
c.lock.Lock()
|
|
defer c.lock.Unlock()
|
|
l, ok := c.cache[offset]
|
|
if !ok {
|
|
// TODO(v2): for offset=0 it should use some descriptive text like
|
|
// "without time zone".
|
|
l = time.FixedZone("", offset)
|
|
c.cache[offset] = l
|
|
}
|
|
return l
|
|
}
|