Skip to content

Refactor Models Nov 30, 2024 #3

Closed
@Arlodotexe

Description

@Arlodotexe

Background

See #2 for background.

Problem

The models must be updated according to the refined API spec.

Solution

We've split this analysis into two sections: Lists and properties. Each section lists what's extra and what's missing for each of the three types.


Lists:

Current setup

Publisher

  • Projects
  • Users
  • ParentPublishers
  • ChildPublishers

Project

  • Collaborators
  • Dependencies
  • Connections
  • Features
  • Links
  • Images

User

  • Connections
  • Projects
  • Publishers
  • Links

Changes to make:

[What's extra]:

Publisher doesn't need:

  • Users
  • Projects

Project doesn't need:

  • [n/a]

User doesn't need:

  • Projects
[What's missing]:

Publisher is missing:

  • Users + Roles
  • Connections
  • Links

Project is missing:

  • [n/a]

User is missing:

  • Projects + Roles
  • Publisher + Roles

Properties:

Current setup

Publisher

  • Owner
  • Name
  • Description
  • Icon
  • AccentColor
  • ContactEmail
  • IsUnlisted

Project

  • Publisher
  • Name
  • Description
  • Icon
  • HeroImage
  • AccentColor
  • Category
  • CreatedAt
  • ForgetMe
  • IsUnlisted

User

  • Name
  • MarkdownAboutMe
  • Icon
  • ForgetMe

Changes to make:

[What's extra]:

Publisher doesn't need:

  • Owner
  • ContactEmail
  • Icon

Project doesn't need:

  • HeroImage
  • CreatedAt
  • Icon

User doesn't need:

  • MarkdownAboutMe
  • Icon
[What's missing]:

Publisher is missing:

  • ExtendedDescription
  • ForgetMe

Project is missing:

  • ExtendedDescription

User is missing:

  • ExtendedDescription

In addition to property and collection updates, several other changes should be made to the models while we're in here refactoring things:

  • Remove constructors entirely, declare properties as required or supply default values instead.
  • Remove any json-related attributes.
  • Any mention of IsPrivate should be updated to IsUnlisted, including comments.
  • Identify common properties and collections, then create common interfaces to ensure consistency. Ensure code comments match the generic nature of the common interfaces.
  • Cid should be replaced with DagCid wherever possible. This signals to IPLD that the value is a "link" type pointing to another DAG and is used by various automated tooling.

Metadata

Metadata

Assignees

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions