grim/youtrack-import

Load all the users into memory
draft
2020-07-03, Gary Kramlich
f9b83503c010
Parents 4490f0218301
Children a515c4b3d465
Load all the users into memory
--- a/trac/project.go Fri Jul 03 19:07:24 2020 -0500
+++ b/trac/project.go Fri Jul 03 20:06:06 2020 -0500
@@ -7,10 +7,18 @@
)
func createProject(e *environment) (*youtrack.Project, error) {
+ users, err := e.loadUsers()
+ if err != nil {
+ return nil, err
+ }
+
+ fmt.Printf("loaded %d users\n", len(users))
+
tracTickets, err := e.loadTickets()
if err != nil {
return nil, err
}
+
issues := make([]*youtrack.Issue, len(tracTickets))
for idx, ticket := range tracTickets {
issue, err := ticket.toYoutrack()
@@ -27,5 +35,5 @@
fmt.Printf("Project: has %d issues\n", len(issues))
- return project, fmt.Errorf("not implemented")
+ return project, nil
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/trac/users.go Fri Jul 03 20:06:06 2020 -0500
@@ -0,0 +1,42 @@
+package trac
+
+import (
+ "keep.imfreedom.org/grim/youtrack-import/youtrack"
+)
+
+type sessionAttribute struct {
+ Sid string `db:"sid"`
+ Authenticated bool `db:"authenticated"`
+ Name string `db:"name"`
+ Value string `db:"value"`
+}
+
+func (e *environment) loadUsers() (map[string]*youtrack.User, error) {
+ var err error
+
+ users := map[string]*youtrack.User{}
+
+ sessionAttributes := []sessionAttribute{}
+ err = e.db.Select(&sessionAttributes, "SELECT * FROM session_attribute WHERE name = 'name' or name = 'email'")
+ if err != nil {
+ return nil, err
+ }
+
+ for _, sessionAttribute := range sessionAttributes {
+ user, found := users[sessionAttribute.Sid]
+ if !found {
+ sid := sessionAttribute.Sid
+ user = &youtrack.User{Login: sid}
+ users[sid] = user
+ }
+
+ switch sessionAttribute.Name {
+ case "name":
+ user.FullName = sessionAttribute.Value
+ case "email":
+ user.Email = sessionAttribute.Value
+ }
+ }
+
+ return users, nil
+}