model

package module
v0.0.27 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 5, 2023 License: MIT Imports: 3 Imported by: 40

README

Estructuras que utilizo con frecuencia en proyectos escritos en Go

ejemplo de uso en un objeto

func MedicalHistory() model.Object {
	return model.Object{
		Name:           "medicalhistory",
		TextFieldNames: []string{"service_name"},
		Fields: []model.Field{
			{Name: "id_medicalhistory", Legend: "id", Input: input.Pk()},
			{Name: "id_patient", Legend: "paciente", Input: input.Pk()},

			{Name: "staff_id", Legend: "Id", Input: input.Pk()},
			{Name: "staff_name", Legend: "Atendido por", Input: input.Text()},
			{Name: "staff_ocupation", Legend: "Especialidad", Input: input.Text()},
			{Name: "staff_area", Legend: "Area", Input: input.Check(Area{})},

			{Name: "service_id", Legend: "Prestación", Input: input.Pk()},

			{Name: "day_attention", Legend: "Dia Atención", Input: input.Date()},
			{Name: "hour_attention", Legend: "Hora", Input: input.Hour(`min="08:15"`, `max="20:15"`)},

			{Name: "reason", Legend: "Motivo Consulta, Servicio o Procedimiento", Input: input.TextArea()},
			{Name: "diagnostic", Legend: "Diagnostico (Descripción)", Input: input.TextArea()},
			{Name: "prescription", Legend: "Prescripción (Conclusion)", Input: input.TextArea()},

			{Name: "last_print_file", Legend: "Ultima Impresión en Archivo", Input: input.Text()},
		},
	}
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Component

type Component struct {
	//ej: search_footer,datalist,form
	Name string
	// CssGlobal() string | Css Global ej: .mi-style{background:black;}
	CssGlobal
	// CssPrivate() string | Css Privado
	CssPrivate
	// JsGlobal() string | Js Global
	JsGlobal
	// JsPrivate() string | Js Privado Modulo ej: MyFunction(e){console.log("hello ",e)};
	JsPrivate
	// JsListeners() string | ej: btn.addEventListener('click', MyFunction);
	JsListeners

	//ej: func (Component) FolderPath() string {
	// _, filename, _, _ := runtime.Caller(0)
	// dir := filepath.Dir(filename)
	// return filepath.ToSlash(dir)
	// }
	Path
}

type CssGlobal added in v0.0.7

type CssGlobal interface {
	CssGlobal() string
}

type CssPrivate added in v0.0.5

type CssPrivate interface {
	CssPrivate() string
}

type CutData added in v0.0.19

type CutData struct {

	// ej Modelo Objeto: usuario := Object{Name: "Usuario",Fields: []Field{
	// 		{Name: "name"}, //0
	// 		{Name: "email"},//1
	// 		{Name: "phone"},//2
	// 	},}
	// ej data normal con todos los campos: {"name":"John Doe","email":"johndoe@example.com","phone":"555"}
	// version recortada Data: {"John Doe","johndoe@example.com","555"}
	// Index al codificar = {"0:0","1:1","2:2"}
	// ej no mail: {"marcel", "777"}
	// Index al codificar = {"0:0","1:2"}
	Index map[uint8]uint8 `json:"i"`
	//Data ej en mapa: "Data":[{"id":"222","name":"manzana","valor":"1200"}]
	// ahora: "Data":["222","manzana","1200"]
	Data []string `json:"d"`
}

type CutResponse added in v0.0.19

type CutResponse struct {
	//Type,Object,Module,Message
	//ej: ["create","user","ModuleUsers","ok"]
	CutOptions []string  `json:"o"`
	CutData    []CutData `json:"d"`
}

func (*CutResponse) CutResponseDecode added in v0.0.21

func (cr *CutResponse) CutResponseDecode(data []map[string]string) (out Response)

type Field

type Field struct {
	// si el campo comienza com id_ se considera como único y perteneciente a una tabla específica ej: id_user su tabla es user
	// otros ej: id_usuario, apellido, address, city etc
	Name        string
	Unique      bool   //campo único en db
	Inalterable bool   //la data en el campo sera inalterable después de la creación (¡no se puede modificar!)
	Legend      string //como se mostrara al usuario el campo en el encabezado ej: "name" por "Nombre Usuario"
	Input
	SkipValidation        bool //sin validar
	SkipCompletionAllowed bool //si el campo es requerido obligatoriamente o no

	NotRenderHtml bool // si no se necesita en formulario html

}

type Input added in v0.0.5

type Input struct {
	Component

	Tag
	Validate

	TestData
}

type JsGlobal added in v0.0.5

type JsGlobal interface {
	JsGlobal() string
}

type JsListeners added in v0.0.5

type JsListeners interface {
	JsListeners() string
}

type JsPrivate added in v0.0.7

type JsPrivate interface {
	JsPrivate() string
}

type Module

type Module struct {
	//nombre modulo ej: chat,patient,user
	Name string
	//Titulo que vera el usuario ej: "Modulo Fotografía"
	Title string
	// icono según sprite svg ej: "icon-camera"
	Icon string

	UI
	//areas soportadas por el modulo ej: 'a','t','x'
	Areas []byte
	// ui/components que usa el modulo ej: form,datalist,search....
	Components []Component
	// objetos que contiene el modulo ej: patient,user
	Objects []Object
}

type Object

type Object struct {
	Name           string   //nombre del objeto o tabla
	TextFieldNames []string //nombre de campos mas representativos del objeto o tabla ej: nombre, apellido
	Fields         []Field  //campos del objeto
}

func (Object) Columns

func (o Object) Columns() (columns []string)

func (Object) DataDecode added in v0.0.19

func (o Object) DataDecode(cut_data ...CutData) ([]map[string]string, error)

func (Object) DataEncode added in v0.0.19

func (o Object) DataEncode(data map[string]string) CutData

DataEncode quita los nombres de los campos de la data según modelo del objeto

func (Object) FieldExist added in v0.0.16

func (o Object) FieldExist(field_name string) (Field, bool)

func (Object) FilterField

func (o Object) FilterField(nameRequired string) (fielsOut Field)

func (Object) FilterFields

func (o Object) FilterFields(namesRequired ...string) (fielsOut []Field)

func (Object) FilterRemoveFields

func (o Object) FilterRemoveFields(namesToRemove ...string) (fielsOut []Field)

func (Object) GetFieldByName

func (o Object) GetFieldByName(nameRq string) (fielOut Field)

func (Object) GetID

func (o Object) GetID(data_search map[string]string) string

func (Object) GetRepresentativeTextField

func (o Object) GetRepresentativeTextField(data_element map[string]string) (values string)

func (Object) MainName

func (o Object) MainName() string

func (Object) PrimaryKeyName

func (o Object) PrimaryKeyName() string

func (Object) RenderFields

func (o Object) RenderFields() (fielsOut []Field)

func (Object) RequiredFields

func (o Object) RequiredFields() (fielsOut []Field)

func (Object) ValidateData added in v0.0.16

func (o Object) ValidateData(validate_all_fields bool, all_data ...map[string]string) (string, bool)

validar objeto

type Path added in v0.0.27

type Path interface {
	FolderPath() string
}

type Permission

type Permission struct {
	Create bool
	Update bool
	Delete bool
}

type Request

type Request struct {
	//usuario que ejecuta la solicitud
	*User
	// paquetes de solicitud y respuesta
	Packages []Response
}

type Response

type Response struct {
	Type    string              `json:"t,omitempty"` //tipo solicitud respuesta: create, read, update, delete o error
	Object  string              `json:"o,omitempty"` //nombre de la tabla u objeto controlador hacia donde va la solicitud
	Module  string              `json:"m,omitempty"` //nombre del module controlador hacia donde va la solicitud
	Message string              `json:"g,omitempty"` //mensaje para el usuario de la solicitud
	Data    []map[string]string `json:"d,omitempty"` //data entrada y respuesta json

	SkipMeInResponse bool     `json:"-"` //  saltarme al difundir
	Recipients       []string `json:"-"` // lista de ip, token o ids según app para el reenvió al finalizar solicitud
	TargetArea       bool     `json:"-"` // si es falso el destino por defecto es publico de lo contrario sera para todos quines tengan la misma area del usuario solicitante
}

type Tag added in v0.0.26

type Tag interface {
	HtmlTag(id, field_name string, allow_skip_completed bool) string
}

type TestData added in v0.0.10

type TestData interface {
	GoodTestData() (out []string)
	WrongTestData() (out []string)
}

type UI added in v0.0.26

type UI interface {
	UserInterface(area_access byte) string
}

type User

type User struct {
	Token          string // token de sesión solicitante
	Ip             string
	Name           string
	Area           byte  //0 sin area.. un que byte y uint8 son lo mismo en go la idea que aca sea un valor de carácter ej: a,s,p...
	AccessLevel    uint8 // aquí valor numérico 0 a 255
	Packages       chan []Response
	LastConnection time.Time
}

type Validate added in v0.0.5

type Validate interface {
	ValidateField(data_in string, skip_validation bool) bool
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL