Page Menu
Home
Software Heritage
Search
Configure Global Search
Log In
Files
F8396296
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
6 KB
Subscribers
None
View Options
diff --git a/swh/graphql/resolvers/visit_status.py b/swh/graphql/resolvers/visit_status.py
index c1c148b..ac70411 100644
--- a/swh/graphql/resolvers/visit_status.py
+++ b/swh/graphql/resolvers/visit_status.py
@@ -1,37 +1,41 @@
from swh.graphql.backends import archive
from .base_connection import BaseConnection
from .base_node import BaseNode
class BaseVisitStatusNode(BaseNode):
""" """
+ @property
+ def snapshotId(self): # To support the schema naming convention
+ return self._node.snapshot
+
class LatestVisitStatusNode(BaseVisitStatusNode):
"""
Get the latest visit status for a visit
self.obj is the visit object here
self.obj.origin is the origin URL
"""
def _get_node_data(self):
return archive.Archive().get_latest_visit_status(
self.obj.origin, self.obj.visitId
)
class VisitStatusConnection(BaseConnection):
"""
self.obj is the visit object
"""
_node_class = BaseVisitStatusNode
def _get_paged_result(self):
return archive.Archive().get_visit_status(
self.obj.origin,
self.obj.visitId,
after=self._get_after_arg(),
first=self._get_first_arg(),
)
diff --git a/swh/graphql/schema/schema.graphql b/swh/graphql/schema/schema.graphql
index 66d7cb9..08758cb 100644
--- a/swh/graphql/schema/schema.graphql
+++ b/swh/graphql/schema/schema.graphql
@@ -1,340 +1,341 @@
scalar SWHID
scalar Sha1
scalar DateTime
scalar DateTimeZone
scalar BinaryText
interface Node {
id: ID!
}
interface SWHNode {
id: Sha1!
}
type PageInfo {
endCursor: String
hasNextPage: Boolean!
}
type OriginConnection {
edges: [OriginEdge]
nodes: [Origin]
pageInfo: PageInfo!
totalCount: Int
}
type OriginEdge {
cursor: String!
node: Origin
}
type Origin implements SWHNode {
id: Sha1!
url: String!
visits(
first: Int!
after: String
): VisitConnection!
latestVisit: Visit
snapshots(
first: Int!
after: String
): SnapshotConnection
}
type VisitConnection {
edges: [VisitEdge]
nodes: [Visit]
pageInfo: PageInfo!
totalCount: Int
}
type VisitEdge {
cursor: String!
node: Visit
}
type Visit implements Node {
id: ID!
visitId: Int
date: DateTime!
type: String
status(
first: Int
after: String
): VisitStatusConnection
latestStatus: VisitStatus
}
type VisitStatusConnection {
edges: [VisitStatusEdge]
nodes: [VisitStatus]
pageInfo: PageInfo!
totalCount: Int
}
type VisitStatusEdge {
cursor: String!
node: VisitStatus
}
type VisitStatus {
status: String!
date: DateTime!
+ snapshotId: Sha1
snapshot: Snapshot
type: String
}
type SnapshotConnection {
edges: [SnapshotEdge]
nodes: [Snapshot]
pageInfo: PageInfo!
totalCount: Int
}
type SnapshotEdge {
cursor: String!
node: Snapshot
}
type Snapshot implements SWHNode {
id: Sha1!
branches(
first: Int!
after: String
types: [BranchTypes]
nameInclude: String
): BranchConnection
}
type BranchConnection {
edges: [BranchConnectionEdge]
nodes: [Branch]
pageInfo: PageInfo!
totalCount: Int
}
type BranchConnectionEdge {
cursor: String!
node: Branch
}
type Person {
email: BinaryText
name: BinaryText
fullname: BinaryText
}
# FIXME, this can be Content, Directory, Snapshot, or Alias as well
union BranchTarget = Revision | Release
enum BranchTypes {
revision
release
alias
content
directory
snapshot
}
type Branch {
name: BinaryText
type: BranchTypes
targetId: Sha1
target: BranchTarget
}
type RevisionConnection {
edges: [RevisionEdge]
nodes: [Revision]
pageInfo: PageInfo!
totalCount: Int
}
type RevisionEdge {
cursor: String!
node: Revision
}
type Revision implements SWHNode {
id: Sha1!
message: BinaryText
author: Person
committer: Person
date: DateTimeZone
type: String # Revision type: FIXME, change to an enum
directoryId: Sha1
directory: Directory
parentIds: [Sha1]
parents(
first: Int
after: String
): RevisionConnection
revisionLog(
first: Int!
after: String
): RevisionConnection
}
union ReleaseTarget = Release | Revision | Directory | Content
enum ReleaseTargetType {
release
revision
content
directory
}
type Release implements SWHNode {
id: Sha1!
name: BinaryText
message: BinaryText
author: Person
date: DateTimeZone
targetId: Sha1
targetType: ReleaseTargetType
target: ReleaseTarget
}
type DirectoryEntryConnection {
edges: [DirectoryEntryEdge]
nodes: [DirectoryEntry]
pageInfo: PageInfo!
totalCount: Int
}
type DirectoryEntryEdge {
cursor: String!
node: DirectoryEntry
}
union DirectoryEntryTarget = Directory | Content
enum DirectoryEntryType {
dir
file
rev
}
type DirectoryEntry {
name: BinaryText
type: DirectoryEntryType
targetId: Sha1
target: DirectoryEntryTarget
}
type Directory implements SWHNode {
id: Sha1!
entries(
first: Int
after: String
): DirectoryEntryConnection
}
type ContentChecksum { # FIXME, temp types
blake2s256: Sha1
sha1: Sha1
sha1_git: Sha1
sha256: Sha1
}
# type ContentType {
# test: String
# }
# type ContentLanguage {
# test: String
# }
# type ContentLicense {
# test: String
# }
type Content implements SWHNode {
id: Sha1!
swhId: String
checksum: ContentChecksum
# data:
# filetype: ContentType
# language: ContentLanguage
# license: ContentLicense
length: Int
status: String
data: BinaryText
}
type Query {
"""
Get an origin with its url
"""
origin(
url: String!
): Origin
"""
Get a list of origins
matching the given filters
Can also be used to search for an origin
"""
# FIMXE, use Input types to make this cleaner
origins(
first: Int!
after: String
urlPattern: String
): OriginConnection
"""
Get a visit object with its id
and/or origin and visit id
"""
visit(
originUrl: String!
visitId: Int!
): Visit
"""
Get a snapshot with Sha1
"""
snapshot(
Sha1: Sha1!
): Snapshot
"""
Get the revision with the given Sha1
"""
revision(
Sha1: Sha1!
): Revision
"""
Get the release with the given Sha1
"""
release(
Sha1: Sha1!
): Release
"""
Get the directory with the given Sha1
"""
directory(
Sha1: Sha1!
): Directory
"""
Get the content with the given Sha1
"""
content(
Sha1: Sha1!
): Content
# """
# Search with the given swhid
# """
# searchWithSwhid
}
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Jun 4 2025, 7:51 PM (12 w, 4 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3297774
Attached To
rDGQL GraphQL API
Event Timeline
Log In to Comment