WIP: Refactor
This commit is contained in:
Vendored
+47
@@ -0,0 +1,47 @@
|
||||
package cache
|
||||
|
||||
import (
|
||||
"sync"
|
||||
|
||||
"git.gdulai.com/gdulai/simpleorm/schema"
|
||||
)
|
||||
|
||||
type SchemaCache struct {
|
||||
mu sync.RWMutex
|
||||
data map[string]*schema.Table
|
||||
}
|
||||
|
||||
func NewSchemaCache(tables []*schema.Table) *SchemaCache {
|
||||
cache := &SchemaCache{
|
||||
data: make(map[string]*schema.Table),
|
||||
}
|
||||
for _, table := range tables {
|
||||
cache.add(table)
|
||||
}
|
||||
|
||||
return cache
|
||||
}
|
||||
|
||||
func (o *SchemaCache) add(table *schema.Table) {
|
||||
o.mu.Lock()
|
||||
defer o.mu.Unlock()
|
||||
o.data[table.Type.Name()] = table
|
||||
}
|
||||
|
||||
func (o *SchemaCache) Get(typeName string) (*schema.Table, bool) {
|
||||
o.mu.RLock()
|
||||
defer o.mu.RUnlock()
|
||||
table, ok := o.data[typeName]
|
||||
return table, ok
|
||||
}
|
||||
|
||||
func (o *SchemaCache) GetAll() []*schema.Table {
|
||||
o.mu.RLock()
|
||||
defer o.mu.RUnlock()
|
||||
var result []*schema.Table
|
||||
|
||||
for _, v := range o.data {
|
||||
result = append(result, v)
|
||||
}
|
||||
return result
|
||||
}
|
||||
Reference in New Issue
Block a user