MCPcopy Create free account
hub / github.com/compozy/agh / NewKernel

Function NewKernel

internal/resources/kernel.go:139–170  ·  view source on GitHub ↗

NewKernel constructs a new raw resource persistence kernel over the supplied database.

(db *sql.DB, opts ...Option)

Source from the content-addressed store, hash-verified

137
138// NewKernel constructs a new raw resource persistence kernel over the supplied database.
139func NewKernel(db *sql.DB, opts ...Option) (*Kernel, error) {
140 if db == nil {
141 return nil, errors.New("resources: database is required")
142 }
143
144 kernel := &Kernel{
145 db: db,
146 now: func() time.Time { return time.Now().UTC() },
147 maxSpecBytes: defaultMaxSpecBytes,
148 maxSnapshotRecords: defaultMaxSnapshotRecords,
149 maxSnapshotBytes: defaultMaxSnapshotBytes,
150 sourceLocks: make(map[string]*sourceLock),
151 }
152 for _, opt := range opts {
153 if opt != nil {
154 opt(kernel)
155 }
156 }
157 if kernel.now == nil {
158 return nil, errors.New("resources: clock is required")
159 }
160 if kernel.maxSpecBytes <= 0 {
161 return nil, errors.New("resources: max spec bytes must be positive")
162 }
163 if kernel.maxSnapshotRecords <= 0 {
164 return nil, errors.New("resources: max snapshot records must be positive")
165 }
166 if kernel.maxSnapshotBytes <= 0 {
167 return nil, errors.New("resources: max snapshot bytes must be positive")
168 }
169 return kernel, nil
170}
171
172// ActivateSourceSession registers the active nonce and resets the snapshot version counter for one source.
173func (k *Kernel) ActivateSourceSession(

Calls 1

NowMethod · 0.45