@@ -114,8 +114,97 @@ type MinimalResponse struct {
114114 URL string `json:"url"`
115115}
116116
117+ type MinimalProject struct {
118+ ID * int64 `json:"id,omitempty"`
119+ NodeID * string `json:"node_id,omitempty"`
120+ Owner * MinimalUser `json:"owner,omitempty"`
121+ Creator * MinimalUser `json:"creator,omitempty"`
122+ Title * string `json:"title,omitempty"`
123+ Description * string `json:"description,omitempty"`
124+ Public * bool `json:"public,omitempty"`
125+ ClosedAt * github.Timestamp `json:"closed_at,omitempty"`
126+ CreatedAt * github.Timestamp `json:"created_at,omitempty"`
127+ UpdatedAt * github.Timestamp `json:"updated_at,omitempty"`
128+ DeletedAt * github.Timestamp `json:"deleted_at,omitempty"`
129+ Number * int `json:"number,omitempty"`
130+ ShortDescription * string `json:"short_description,omitempty"`
131+ DeletedBy * MinimalUser `json:"deleted_by,omitempty"`
132+ }
133+
134+ type MinimalProjectItem struct {
135+ ID * int64 `json:"id,omitempty"`
136+ NodeID * string `json:"node_id,omitempty"`
137+ ProjectNodeID * string `json:"project_node_id,omitempty"`
138+ ContentNodeID * string `json:"content_node_id,omitempty"`
139+ ProjectURL * string `json:"project_url,omitempty"`
140+ ContentType * string `json:"content_type,omitempty"`
141+ Creator * MinimalUser `json:"creator,omitempty"`
142+ CreatedAt * github.Timestamp `json:"created_at,omitempty"`
143+ UpdatedAt * github.Timestamp `json:"updated_at,omitempty"`
144+ ArchivedAt * github.Timestamp `json:"archived_at,omitempty"`
145+ ItemURL * string `json:"item_url,omitempty"`
146+ Fields []* projectV2Field `json:"fields,omitempty"`
147+ }
148+
117149// Helper functions
118150
151+ func convertToMinimalProject (fullProject * github.ProjectV2 ) * MinimalProject {
152+ if fullProject == nil {
153+ return nil
154+ }
155+
156+ return & MinimalProject {
157+ ID : github .Ptr (fullProject .GetID ()),
158+ NodeID : github .Ptr (fullProject .GetNodeID ()),
159+ Owner : convertToMinimalUser (fullProject .GetOwner ()),
160+ Creator : convertToMinimalUser (fullProject .GetCreator ()),
161+ Title : github .Ptr (fullProject .GetTitle ()),
162+ Description : github .Ptr (fullProject .GetDescription ()),
163+ Public : github .Ptr (fullProject .GetPublic ()),
164+ ClosedAt : github .Ptr (fullProject .GetClosedAt ()),
165+ CreatedAt : github .Ptr (fullProject .GetCreatedAt ()),
166+ UpdatedAt : github .Ptr (fullProject .GetUpdatedAt ()),
167+ DeletedAt : github .Ptr (fullProject .GetDeletedAt ()),
168+ Number : github .Ptr (fullProject .GetNumber ()),
169+ ShortDescription : github .Ptr (fullProject .GetShortDescription ()),
170+ DeletedBy : convertToMinimalUser (fullProject .GetDeletedBy ()),
171+ }
172+ }
173+
174+ func convertToMinimalUser (user * github.User ) * MinimalUser {
175+ if user == nil {
176+ return nil
177+ }
178+
179+ return & MinimalUser {
180+ Login : user .GetLogin (),
181+ ID : user .GetID (),
182+ ProfileURL : user .GetHTMLURL (),
183+ AvatarURL : user .GetAvatarURL (),
184+ }
185+ }
186+
187+ func convertToMinimalProjectItem (item * projectV2Item ) * MinimalProjectItem {
188+ if item == nil {
189+ return nil
190+ }
191+
192+ return & MinimalProjectItem {
193+ ID : item .ID ,
194+ NodeID : item .NodeID ,
195+ ProjectNodeID : item .ProjectNodeID ,
196+ ContentNodeID : item .ContentNodeID ,
197+ ProjectURL : item .ProjectURL ,
198+ ContentType : item .ContentType ,
199+ Creator : convertToMinimalUser (item .Creator ),
200+ CreatedAt : item .CreatedAt ,
201+ UpdatedAt : item .UpdatedAt ,
202+ ArchivedAt : item .ArchivedAt ,
203+ ItemURL : item .ItemURL ,
204+ Fields : item .Fields ,
205+ }
206+ }
207+
119208// convertToMinimalCommit converts a GitHub API RepositoryCommit to MinimalCommit
120209func convertToMinimalCommit (commit * github.RepositoryCommit , includeDiffs bool ) MinimalCommit {
121210 minimalCommit := MinimalCommit {
0 commit comments