Started to work on queries

This commit is contained in:
cdricms
2024-04-28 18:41:41 +02:00
parent 25e4296fdb
commit e43c4b129c
2 changed files with 105 additions and 3 deletions

100
proto/queries.go Normal file
View File

@@ -0,0 +1,100 @@
package proto
import (
"reflect"
)
type EmployeeField string
const (
FieldEmpID EmployeeField = "EmpId"
FieldNamePrefix = "NamePrefix"
FieldFirstName = "FirstName"
FieldMiddleInitial = "MiddleInitial"
FieldLastName = "LastName"
FieldGender = "Gender"
FieldEmail = "Email"
FieldFathersName = "FathersName"
FieldMothersName = "MothersName"
FieldMothersMaidenName = "MothersMaidenName"
FieldBirthdate = "Birthdate"
FieldBirthTime = "BirthTime"
FieldWeightKg = "WeightKg"
FieldJoiningDate = "JoiningDate"
FieldJoiningQuarter = "JoiningQuarter"
FieldJoiningHalf = "JoiningHalf"
FieldJoiningYear = "JoiningYear"
FieldJoiningMonth = "JoiningMonth"
FieldJoiningMonthName = "JoiningMonthName"
FieldJoiningMonthNameShort = "JoiningMonthNameShort"
FieldJoiningMonthDay = "JoiningMonthDay"
FieldJoiningWeekDay = "JoiningWeekDay"
FieldJoiningWeekDayShort = "JoiningWeekDayShort"
FieldYearsOfService = "YearsOfService"
FieldSalary = "Salary"
FieldLatestHikePercentage = "LatestHikePercentage"
FieldSsn = "Ssn"
FieldPhoneNumber = "PhoneNumber"
FieldPlaceName = "PlaceName"
FieldCounty = "County"
FieldCity = "City"
FieldState = "State"
FieldZip = "Zip"
FieldRegion = "Region"
FieldUsername = "Username"
FieldPassword = "Password"
)
func (e *Employee) Copy() Employee {
return Employee{
EmpId: e.GetEmpId(),
NamePrefix: e.GetNamePrefix(),
FirstName: e.GetFirstName(),
MiddleInitial: e.GetMiddleInitial(),
LastName: e.GetLastName(),
Gender: e.GetGender(),
Email: e.GetEmail(),
FathersName: e.GetFathersName(),
MothersName: e.GetMothersName(),
MothersMaidenName: e.GetMothersMaidenName(),
Birthdate: e.GetBirthdate(),
BirthTime: e.GetBirthTime(),
WeightKg: e.GetWeightKg(),
JoiningDate: e.GetJoiningDate(),
JoiningQuarter: e.GetJoiningQuarter(),
JoiningHalf: e.GetJoiningHalf(),
JoiningYear: e.GetJoiningYear(),
JoiningMonth: e.GetJoiningMonth(),
JoiningMonthName: e.GetJoiningMonthName(),
JoiningMonthNameShort: e.GetJoiningMonthNameShort(),
JoiningMonthDay: e.GetJoiningMonthDay(),
JoiningWeekDay: e.GetJoiningWeekDay(),
JoiningWeekDayShort: e.GetJoiningWeekDayShort(),
YearsOfService: e.GetYearsOfService(),
Salary: e.GetSalary(),
LatestHikePercentage: e.GetLatestHikePercentage(),
Ssn: e.GetSsn(),
PhoneNumber: e.GetPhoneNumber(),
PlaceName: e.GetPlaceName(),
County: e.GetCounty(),
City: e.GetCity(),
State: e.GetState(),
Zip: e.GetZip(),
Region: e.GetRegion(),
Username: e.GetUsername(),
Password: e.GetPassword(),
}
}
func (el *EmployeeList) QueryEmployeesByColumn(column EmployeeField, query string) ([]*Employee, error) {
employees := make([]*Employee, 0)
for _, employee := range el.GetEmployees() {
value := reflect.ValueOf(employee).Elem().FieldByName(string(column))
if value.String() == query {
employees = append(employees, employee)
}
}
return employees, nil
}