Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Switch to near macro #103

Merged
merged 8 commits into from
Mar 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
12 changes: 6 additions & 6 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ edition = "2021"
crate-type = ["cdylib"]

[dependencies]
near-sdk = "5.0.0"
near-contract-standards = "5.0.0"
near-sdk = "5.1.0"
near-contract-standards = "5.1.0"
serde_json = { version = "1.0", features = ["preserve_order"] }
devhub_common = { path = "./devhub_common" }

[dev-dependencies]
near-sdk = { version = "5.0.0", features = ["unit-testing"] }
near-sdk = { version = "5.1.0", features = ["unit-testing"] }
insta = { version = "1.31.0", features = ["json", "redactions"] }
regex = "1"
near-workspaces = { version = "0.10.0", features = ["unstable"], default-features = false }
Expand Down
8 changes: 4 additions & 4 deletions community-factory/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion community-factory/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ edition = "2021"
crate-type = ["cdylib"]

[dependencies]
near-sdk = "5.0.0"
near-sdk = "5.1.0"
devhub_common = { path = "../devhub_common" }

[profile.release]
Expand Down
10 changes: 4 additions & 6 deletions community-factory/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
use near_sdk::borsh::{BorshDeserialize, BorshSerialize};
use near_sdk::{env, near_bindgen, require, AccountId, Gas, NearToken, Promise};
use near_sdk::{env, near, require, AccountId, Gas, NearToken, Promise};
use near_sdk::serde_json::json;

use devhub_common::social_db_contract;
Expand All @@ -8,12 +7,11 @@ const CODE: &[u8] = include_bytes!("../../community/target/near/devhub_community
const INITIAL_BALANCE: NearToken = NearToken::from_near(4);
const PUBKEY_STR: &str = "ed25519:4deBAvg1S4MF7qe9GBDJwDCGLyyXtJa73JnMXwyG9vsB";

#[near_bindgen]
#[derive(BorshDeserialize, BorshSerialize, Default)]
#[borsh(crate = "near_sdk::borsh")]
#[near(contract_state)]
#[derive(Default)]
pub struct Contract {}

#[near_bindgen]
#[near]
impl Contract {
#[payable]
pub fn create_community_account(&mut self, community: String) -> Promise {
Expand Down
8 changes: 4 additions & 4 deletions community/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion community/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ edition = "2021"
crate-type = ["cdylib"]

[dependencies]
near-sdk = "5.0.0"
near-sdk = "5.1.0"
devhub_common = { path = "../devhub_common" }

[profile.release]
Expand Down
10 changes: 4 additions & 6 deletions community/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,18 +1,16 @@
use devhub_common::social_db_contract;
use near_sdk;
use near_sdk::borsh::{BorshDeserialize, BorshSerialize};
use near_sdk::Gas;
use near_sdk::{env, near_bindgen, require, AccountId, NearToken, Promise};
use near_sdk::{env, near, require, AccountId, NearToken, Promise};

const CODE: &[u8] = include_bytes!("../../discussions/target/near/devhub_discussions.wasm");
const PUBKEY_STR: &str = "ed25519:4deBAvg1S4MF7qe9GBDJwDCGLyyXtJa73JnMXwyG9vsB";

#[near_bindgen]
#[derive(BorshDeserialize, BorshSerialize, Default)]
#[borsh(crate = "near_sdk::borsh")]
#[near(contract_state)]
#[derive(Default)]
pub struct Contract {}

#[near_bindgen]
#[near]
impl Contract {
#[payable]
pub fn new(&mut self) -> Promise {
Expand Down
2 changes: 1 addition & 1 deletion devhub_common/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ version = "0.1.0"
edition = "2021"

[dependencies]
near-sdk = "5.0.0"
near-sdk = "5.1.0"

[profile.release]
codegen-units = 1
Expand Down
8 changes: 4 additions & 4 deletions discussions/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion discussions/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ edition = "2021"
crate-type = ["cdylib"]

[dependencies]
near-sdk = "5.0.0"
near-sdk = "5.1.0"
devhub_common = { path = "../devhub_common" }

[profile.release]
Expand Down
10 changes: 4 additions & 6 deletions discussions/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
use devhub_common::social_db_contract;
use near_sdk::borsh::{BorshDeserialize, BorshSerialize};
use near_sdk::{env, near_bindgen, require, AccountId, NearToken, Promise};
use near_sdk::{env, require, near, AccountId, NearToken, Promise};

#[near_bindgen]
#[derive(BorshDeserialize, BorshSerialize, Default)]
#[borsh(crate = "near_sdk::borsh")]
#[near(contract_state)]
#[derive(Default)]
pub struct Contract {}

#[near_bindgen]
#[near]
impl Contract {
#[init]
pub fn new() -> Self {
Expand Down
87 changes: 11 additions & 76 deletions src/access_control/members.rs
Original file line number Diff line number Diff line change
@@ -1,28 +1,12 @@
use crate::access_control::rules::Rule;
use near_sdk::borsh::{BorshDeserialize, BorshSerialize};
use near_sdk::serde::{Deserialize, Serialize};
use near_sdk::{AccountId, NearSchema};
use near_sdk::{near, AccountId};
use std::collections::hash_map::Entry;
use std::collections::{HashMap, HashSet};

#[derive(
BorshSerialize,
BorshDeserialize,
Serialize,
Deserialize,
Clone,
Debug,
PartialOrd,
PartialEq,
Ord,
Eq,
Hash,
NearSchema,
)]
#[serde(crate = "near_sdk::serde")]
#[near(serializers=[borsh, json])]
#[derive(Clone, Debug, PartialOrd, PartialEq, Ord, Eq, Hash)]
#[serde(from = "String")]
#[serde(into = "String")]
#[borsh(crate = "near_sdk::borsh")]
pub enum Member {
/// NEAR account names do not allow `:` character so this structure cannot be abused.
Account(AccountId),
Expand Down Expand Up @@ -51,65 +35,28 @@ impl Into<String> for Member {
}
}

#[derive(
BorshSerialize,
BorshDeserialize,
Serialize,
Deserialize,
Clone,
Default,
Debug,
Eq,
PartialEq,
NearSchema,
)]
#[serde(crate = "near_sdk::serde")]
#[borsh(crate = "near_sdk::borsh")]
#[near(serializers=[borsh, json])]
#[derive(Clone, Default, Debug, Eq, PartialEq)]
pub struct MemberMetadata {
pub description: String,
pub permissions: HashMap<Rule, HashSet<ActionType>>,
pub children: HashSet<Member>,
pub parents: HashSet<Member>,
}

#[derive(
BorshSerialize,
BorshDeserialize,
Serialize,
Deserialize,
Clone,
PartialOrd,
PartialEq,
Ord,
Eq,
Hash,
Debug,
NearSchema,
)]
#[serde(crate = "near_sdk::serde")]
#[near(serializers=[borsh, json])]
#[derive(Clone, PartialOrd, PartialEq, Ord, Eq, Hash, Debug)]
#[serde(rename_all = "kebab-case")]
#[borsh(crate = "near_sdk::borsh")]
pub enum ActionType {
/// Can edit posts that have these labels.
EditPost,
/// Can add/remove labels that fall under these rules.
UseLabels,
}

#[derive(
BorshSerialize,
BorshDeserialize,
Serialize,
Deserialize,
Clone,
Debug,
Eq,
PartialEq,
NearSchema,
)]
#[serde(crate = "near_sdk::serde")]
#[near(serializers=[borsh, json])]
#[derive(Clone, Debug, Eq, PartialEq)]
#[serde(tag = "member_metadata_version")]
#[borsh(crate = "near_sdk::borsh")]
pub enum VersionedMemberMetadata {
V0(MemberMetadata),
}
Expand All @@ -128,20 +75,8 @@ impl From<MemberMetadata> for VersionedMemberMetadata {
}
}

#[derive(
BorshSerialize,
BorshDeserialize,
Serialize,
Deserialize,
Clone,
Debug,
Eq,
PartialEq,
Default,
NearSchema,
)]
#[serde(crate = "near_sdk::serde")]
#[borsh(crate = "near_sdk::borsh")]
#[near(serializers=[borsh, json])]
#[derive(Clone, Debug, Eq, PartialEq, Default)]
pub struct MembersList {
#[serde(flatten)]
pub members: HashMap<Member, VersionedMemberMetadata>,
Expand Down
11 changes: 4 additions & 7 deletions src/access_control/mod.rs
Original file line number Diff line number Diff line change
@@ -1,23 +1,20 @@
use crate::access_control::members::{Member, MembersList, VersionedMemberMetadata};
use crate::access_control::rules::{Rule, RulesList};
use crate::*;
use near_sdk::borsh::{BorshDeserialize, BorshSerialize};
use near_sdk::serde::{Deserialize, Serialize};
use near_sdk::{near_bindgen, NearSchema};
use near_sdk::near;
use std::collections::{HashMap, HashSet};

pub mod members;
pub mod rules;

#[derive(BorshSerialize, BorshDeserialize, Deserialize, Serialize, Clone, Default, NearSchema)]
#[serde(crate = "near_sdk::serde")]
#[borsh(crate = "near_sdk::borsh")]
#[near(serializers=[borsh, json])]
#[derive(Clone, Default)]
pub struct AccessControl {
pub rules_list: RulesList,
pub members_list: MembersList,
}

#[near_bindgen]
#[near]
impl Contract {
pub fn get_access_control_info(&self) -> &AccessControl {
&self.access_control
Expand Down