33 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Go
		
	
	
	
		
		
			
		
	
	
			33 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Go
		
	
	
	
|  | package core | ||
|  | 
 | ||
|  | // RecordProxy defines an interface for a Record proxy/project model,
 | ||
|  | // aka. custom model struct that acts on behalve the proxied Record to
 | ||
|  | // allow for example typed getter/setters for the Record fields.
 | ||
|  | //
 | ||
|  | // To implement the interface it is usually enough to embed the [BaseRecordProxy] struct.
 | ||
|  | type RecordProxy interface { | ||
|  | 	// ProxyRecord returns the proxied Record model.
 | ||
|  | 	ProxyRecord() *Record | ||
|  | 
 | ||
|  | 	// SetProxyRecord loads the specified record model into the current proxy.
 | ||
|  | 	SetProxyRecord(record *Record) | ||
|  | } | ||
|  | 
 | ||
|  | var _ RecordProxy = (*BaseRecordProxy)(nil) | ||
|  | 
 | ||
|  | // BaseRecordProxy implements the [RecordProxy] interface and it is intended
 | ||
|  | // to be used as embed to custom user provided Record proxy structs.
 | ||
|  | type BaseRecordProxy struct { | ||
|  | 	*Record | ||
|  | } | ||
|  | 
 | ||
|  | // ProxyRecord returns the proxied Record model.
 | ||
|  | func (m *BaseRecordProxy) ProxyRecord() *Record { | ||
|  | 	return m.Record | ||
|  | } | ||
|  | 
 | ||
|  | // SetProxyRecord loads the specified record model into the current proxy.
 | ||
|  | func (m *BaseRecordProxy) SetProxyRecord(record *Record) { | ||
|  | 	m.Record = record | ||
|  | } |