From e43c4b129c2f3c7bb91aca6494c5d1e782bbe23f Mon Sep 17 00:00:00 2001 From: cdricms <36056008+cdricms@users.noreply.github.com> Date: Sun, 28 Apr 2024 18:41:41 +0200 Subject: [PATCH] Started to work on queries --- main.go | 8 ++-- proto/queries.go | 100 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 105 insertions(+), 3 deletions(-) create mode 100644 proto/queries.go diff --git a/main.go b/main.go index a86c897..86b94dc 100644 --- a/main.go +++ b/main.go @@ -5,7 +5,6 @@ import ( "fmt" // "os" - "git.cems.dev/cdricms/bdooc/parsing" "git.cems.dev/cdricms/bdooc/proto" // "git.cems.dev/cdricms/bdooc/parsing" ) @@ -36,7 +35,10 @@ func main() { fmt.Println(err) } - employees := parsing.MapFromProtoList(data) - fmt.Println(employees[:2]) + result, err := data.QueryEmployeesByColumn(proto.FieldYearsOfService, "2.48") + if err != nil { + fmt.Println(err) + } + fmt.Println(result, len(result)) } diff --git a/proto/queries.go b/proto/queries.go new file mode 100644 index 0000000..e112ce7 --- /dev/null +++ b/proto/queries.go @@ -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 +}