public IActionResult CollectArticle(string articleGuid, CollectionTypeEnum collectionType = CollectionTypeEnum.Article) { var collectionBiz = new CollectionBiz(); var result = collectionBiz.CollectTarget(articleGuid, UserID, collectionType.ToString().ToLower(), out var state); return(result ? Success($"{state}操作成功!") : Failed(ErrorCode.DataBaseError, $"{state}操作失败!")); }
public override System.Collections.Generic.Queue <Moonfish.Tags.BlamPointer> ReadFields(System.IO.BinaryReader binaryReader) { System.Collections.Generic.Queue <Moonfish.Tags.BlamPointer> pointerQueue = new System.Collections.Generic.Queue <Moonfish.Tags.BlamPointer>(base.ReadFields(binaryReader)); this.CollectionType = ((CollectionTypeEnum)(binaryReader.ReadInt16())); this.fieldpad = binaryReader.ReadBytes(2); this.GlobalZOffset = binaryReader.ReadSingle(); this.fieldpad0 = binaryReader.ReadBytes(44); this.SpritePlate = binaryReader.ReadTagReference(); pointerQueue.Enqueue(binaryReader.ReadBlamPointer(96)); this.fieldpad1 = binaryReader.ReadBytes(48); return(pointerQueue); }
#pragma warning disable CS8618 // Non-nullable field must contain a non-null value when exiting constructor. public CollectionTestBase() { #pragma warning restore CS8618 #pragma warning disable IDE0045 // Convert to conditional expression if (typeof(TChild) == typeof(ListChild)) { collectionType = CollectionTypeEnum.list; } else if (typeof(TChild) == typeof(DictionaryChild)) { collectionType = CollectionTypeEnum.dictionary; } else if (typeof(TChild) == typeof(SortedListChild)) { collectionType = CollectionTypeEnum.sortedList; } else { throw new NotSupportedException(); } #pragma warning restore IDE0045 var directoryInfo = new DirectoryInfo("TestCsv"); if (directoryInfo.Exists) { directoryInfo.Delete(recursive: true); directoryInfo.Refresh(); } directoryInfo.Create(); //initVariables(); try { csvConfig = new CsvConfig(directoryInfo.FullName, reportException: reportException); bakCsvFileSwapper = new BakCsvFileSwapper(csvConfig); DC.Trace = dcTrace; dc = new DC(csvConfig); initialiseDcParents(); assertData(""); // Create // ====== // Create parent // ------------- traceHeader("create not stored parent"); dc.StartTransaction(); var parent0_ = createParent("p_Temp", isStoring: false); dc.RollbackTransaction(); assertData(""); dc.StartTransaction(); parent0_ = createParent("p_", isStoring: false); dc.CommitTransaction(); assertDataDisposeDCRecreateDCassertData(""); traceHeader("create stored parent"); dc.StartTransaction(); parent0 = createParent("p0Temp", isStoring: true); dc.RollbackTransaction(); assertData(""); dc.StartTransaction(); parent0 = createParent("p0", isStoring: true); dc.CommitTransaction(); assertDataDisposeDCRecreateDCassertData("p0|"); // Create child with Parent==parent0, ParentN==null, ParentR==parentR0, ParentNR=parentNR0 // --------------------------------------------------------------------------------------- traceHeader("create not stored child with not stored parent"); var parentR0_ = createParentR("pR0_", isStoring: false); var parentNR0_ = createParentNR("pRN0_", isStoring: false); dc.StartTransaction(); var child0_ = createChild("c0_Temp", parent0_, null, parentR0_, parentNR0_, isStoring: false); dc.RollbackTransaction(); Assert.AreEqual(0, parent0_.CountAllChildren); Assert.AreEqual(0, parentR0_.CountAllChildren); Assert.AreEqual(0, parentNR0_.CountAllChildren); assertData("p0|"); dc.StartTransaction(); child0_ = createChild("c0_", parent0_, null, parentR0_, parentNR0_, isStoring: false); dc.CommitTransaction(); Assert.AreEqual("c0_", child0_.Text); Assert.AreEqual(child0_, parent0_.AllChildrenFirst); Assert.AreEqual(child0_, parentR0_.AllChildrenFirst); Assert.AreEqual(child0_, parentNR0_.AllChildrenFirst); assertDataDisposeDCRecreateDCassertData("p0|"); traceHeader("create not stored child with stored parent"); parentR0 = createParentR("pR0", isStoring: true); parentNR0 = createParentNR("pNR0", isStoring: true); dc.StartTransaction(); var child0__ = createChild("c0__Temp", parent0, null, parentR0, parentNR0, isStoring: false); dc.RollbackTransaction(); Assert.AreEqual(0, parent0.CountAllChildren); Assert.AreEqual(0, parentR0.CountAllChildren); Assert.AreEqual(0, parentNR0.CountAllChildren); assertData("p0|pR0|pNR0|"); dc.StartTransaction(); child0__ = createChild("c0__", parent0, null, parentR0, parentNR0, isStoring: false); dc.CommitTransaction(); Assert.AreEqual("c0__", child0__.Text); Assert.AreEqual(parent0, child0__.Parent); Assert.AreEqual(parentR0, child0__.ParentR); Assert.AreEqual(parentNR0, child0__.ParentNR); assertDataDisposeDCRecreateDCassertData("p0:c0__|pR0:c0__|pNR0:c0__|", "p0|pR0|pNR0|"); traceHeader("create stored child with stored parent"); dc.StartTransaction(); child0 = createChild("c0Temp", parent0, null, parentR0, parentNR0, isStoring: true); dc.RollbackTransaction(); assertData("p0|pR0|pNR0|"); dc.StartTransaction(); child0 = createChild("c0", parent0, null, parentR0, parentNR0, isStoring: true); dc.CommitTransaction(); assertDataDisposeDCRecreateDCassertData("p0:;c0|pR0:;c0|pNR0:;c0|c0:p0,pR0,pNR0|"); //Fail to create stored child with not stored parent traceHeader("fail to create stored child with not stored parents"); try { var parent0___ = createParent("p0___", isStoring: false); var parentN0___ = createParentN("pN0___", isStoring: false); var parentR0___ = createParentR("pR0___", isStoring: false); var parentNR0___ = createParentNR("pRN0___", isStoring: false); var _ = createChild("failed child", parent0___, parentN0___, parentR0___, parentNR0___); Assert.Fail(); } catch { } //Todo: Ideally, an exception during create, store or remove should not change any data. Is additional code needed undoing //any potentially changed data ? //Assert.AreEqual(0, parent0_.CountAllChildren); assertDataDisposeDCRecreateDCassertData("p0:;c0|pR0:;c0|pNR0:;c0|c0:p0,pR0,pNR0|"); // Update // ====== // Update child.Parent to parent1, child.ParentN to parentN0 // --------------------------------------------------------- traceHeader("not stored child: update with not stored parents"); var parent1_ = createParent("p1_", isStoring: false); var parentN0_ = createParentN("pN0___", isStoring: false); //var parentR1_ = createParent("pR1_", isStoring: false); //var parentNR0_ = createParentN("pNR0_", isStoring: false); dc.StartTransaction(); child0_.Update("c0_.1Temp", (TP)parent1_, (TPN)parentN0_); dc.RollbackTransaction(); Assert.AreEqual(child0_, parent0_.AllChildrenFirst); Assert.AreEqual(0, parentN0_.CountAllChildren); Assert.AreEqual(0, parent1_.CountAllChildren); assertData("p0:;c0|pR0:;c0|pNR0:;c0|c0:p0,pR0,pNR0|"); dc.StartTransaction(); child0_.Update("c0_.1", (TP)parent1_, (TPN)parentN0_); dc.CommitTransaction(); Assert.AreEqual(0, parent0_.CountAllChildren); Assert.AreEqual(child0_, parentN0_.AllChildrenFirst); Assert.AreEqual(child0_, parent1_.AllChildrenFirst); assertDataDisposeDCRecreateDCassertData("p0:;c0|pR0:;c0|pNR0:;c0|c0:p0,pR0,pNR0|"); traceHeader("not stored child: update with stored parents"); parent1 = createParent("p1", isStoring: true); parentN0 = createParentN("pN0", isStoring: true); dc.StartTransaction(); child0__.Update("c0__.1Temp", (TP)parent1, (TPN)parentN0); dc.RollbackTransaction(); Assert.AreEqual("c0__", child0__.Text); Assert.AreEqual(parent0.Text, child0__.Parent.Text); Assert.IsNull(child0__.ParentN); assertData("p0:;c0|p1|pN0|pR0:;c0|pNR0:;c0|c0:p0,pR0,pNR0|"); dc.StartTransaction(); child0__.Update("c0__.1", (TP)parent1, (TPN)parentN0); dc.CommitTransaction(); Assert.AreEqual("c0__.1", child0__.Text); Assert.AreEqual(parent1, child0__.Parent); Assert.AreEqual(parentN0, child0__.ParentN); assertDataDisposeDCRecreateDCassertData( "p0:;c0|p1:c0__.1|pN0:c0__.1|pR0:;c0|pNR0:;c0|c0:p0,pR0,pNR0|", "p0:;c0|p1|pN0|pR0:;c0|pNR0:;c0|c0:p0,pR0,pNR0|"); traceHeader("stored child: update with stored parents"); dc.StartTransaction(); child0.Update("c0.1Temp", (TP)parent1, (TPN)parentN0); dc.RollbackTransaction(); assertData("p0:;c0|p1|pN0|pR0:;c0|pNR0:;c0|c0:p0,pR0,pNR0|"); dc.StartTransaction(); child0.Update("c0.1", (TP)parent1, (TPN)parentN0); dc.CommitTransaction(); assertDataDisposeDCRecreateDCassertData("p0|p1:;c0.1|pN0:;c0.1|pR0:;c0.1|pNR0:;c0.1|c0.1:p1,pN0,pR0,pNR0|"); // Update child.ParentN to parentN1 // -------------------------------- traceHeader("not stored child: update not stored ParentN"); var parentN1_ = createParentN("pN1_", isStoring: false); dc.StartTransaction(); child0_.Update("c0_.2Temp", (TP)parent1_, (TPN)parentN1_); dc.RollbackTransaction(); Assert.AreEqual("c0_.1", child0_.Text); Assert.AreEqual(child0_, parent1_.AllChildrenFirst); Assert.AreEqual(child0_, parentN0_.AllChildrenFirst); Assert.AreEqual(0, parentN1_.CountAllChildren); assertData("p0|p1:;c0.1|pN0:;c0.1|pR0:;c0.1|pNR0:;c0.1|c0.1:p1,pN0,pR0,pNR0|"); dc.StartTransaction(); child0_.Update("c0_.2", (TP)parent1_, (TPN)parentN1_); dc.CommitTransaction(); Assert.AreEqual("c0_.2", child0_.Text); Assert.AreEqual(0, parent0_.CountAllChildren); Assert.AreEqual(0, parentN0_.CountAllChildren); Assert.AreEqual(child0_, parent1_.AllChildrenFirst); Assert.AreEqual(child0_, parentN1_.AllChildrenFirst); assertDataDisposeDCRecreateDCassertData("p0|p1:;c0.1|pN0:;c0.1|pR0:;c0.1|pNR0:;c0.1|c0.1:p1,pN0,pR0,pNR0|"); traceHeader("not stored child: update stored ParentN"); parentN1 = createParentN("pN1", isStoring: true); dc.StartTransaction(); child0__.Update("c0__.2Temp", (TP)parent1, (TPN)parentN1); dc.RollbackTransaction(); Assert.AreEqual("c0__.1", child0__.Text); Assert.AreEqual(parent1.Text, child0__.Parent.Text); Assert.AreEqual(parentN0.Text, child0__.ParentN !.Text); assertDataDisposeDCRecreateDCassertData("p0|p1:;c0.1|pN0:;c0.1|pN1|pR0:;c0.1|pNR0:;c0.1|c0.1:p1,pN0,pR0,pNR0|"); dc.StartTransaction(); child0__.Update("c0__.2", (TP)parent1, (TPN)parentN1); dc.CommitTransaction(); Assert.AreEqual("c0__.2", child0__.Text); Assert.AreEqual(parent1, child0__.Parent); Assert.AreEqual(parentN1, child0__.ParentN); assertDataDisposeDCRecreateDCassertData( "p0|p1:c0__.2;,c0.1|pN0:;c0.1|pN1:c0__.2|pR0:;c0.1|pNR0:;c0.1|c0.1:p1,pN0,pR0,pNR0|", "p0|p1:;c0.1|pN0:;c0.1|pN1|pR0:;c0.1|pNR0:;c0.1|c0.1:p1,pN0,pR0,pNR0|"); traceHeader("stored child: update stored ParentN"); dc.StartTransaction(); child0.Update("c0.2Temp", (TP)parent1, (TPN)parentN1); dc.RollbackTransaction(); assertData("p0|p1:;c0.1|pN0:;c0.1|pN1|pR0:;c0.1|pNR0:;c0.1|c0.1:p1,pN0,pR0,pNR0|"); dc.StartTransaction(); child0.Update("c0.2", (TP)parent1, (TPN)parentN1); dc.CommitTransaction(); assertDataDisposeDCRecreateDCassertData("p0|p1:;c0.2|pN0|pN1:;c0.2|pR0:;c0.2|pNR0:;c0.2|c0.2:p1,pN1,pR0,pNR0|"); // Update child.ParentN to null // ---------------------------- traceHeader("not stored child: update not stored ParentN to null"); dc.StartTransaction(); child0_.Update("c0_.3Temp", (TP)parent1_, null); dc.RollbackTransaction(); Assert.AreEqual("c0_.2", child0_.Text); Assert.AreEqual(child0_, parent1_.AllChildrenFirst); Assert.AreEqual(child0_, parentN1_.AllChildrenFirst); assertData("p0|p1:;c0.2|pN0|pN1:;c0.2|pR0:;c0.2|pNR0:;c0.2|c0.2:p1,pN1,pR0,pNR0|"); dc.StartTransaction(); child0_.Update("c0_.3", (TP)parent1_, null); dc.CommitTransaction(); Assert.AreEqual("c0_.3", child0_.Text); Assert.AreEqual(0, parentN0_.CountAllChildren); Assert.AreEqual(child0_, parent1_.AllChildrenFirst); assertDataDisposeDCRecreateDCassertData("p0|p1:;c0.2|pN0|pN1:;c0.2|pR0:;c0.2|pNR0:;c0.2|c0.2:p1,pN1,pR0,pNR0|"); traceHeader("not stored child: update stored ParentN to null"); dc.StartTransaction(); child0__.Update("c0__.3Temp", (TP)parent1, null); dc.RollbackTransaction(); Assert.AreEqual("c0__.2", child0__.Text); Assert.AreEqual(parent1.Text, child0__.Parent.Text); Assert.AreEqual(parentN1.Text, child0__.ParentN !.Text); assertDataDisposeDCRecreateDCassertData("p0|p1:;c0.2|pN0|pN1:;c0.2|pR0:;c0.2|pNR0:;c0.2|c0.2:p1,pN1,pR0,pNR0|"); dc.StartTransaction(); child0__.Update("c0__.3", (TP)parent1, null); dc.CommitTransaction(); Assert.AreEqual("c0__.3", child0__.Text); Assert.AreEqual(parent1, child0__.Parent); Assert.IsNull(child0__.ParentN); assertDataDisposeDCRecreateDCassertData( "p0|p1:c0__.3;,c0.2|pN0|pN1:;c0.2|pR0:;c0.2|pNR0:;c0.2|c0.2:p1,pN1,pR0,pNR0|", "p0|p1:;c0.2|pN0|pN1:;c0.2|pR0:;c0.2|pNR0:;c0.2|c0.2:p1,pN1,pR0,pNR0|"); traceHeader("stored child: update stored ParentN to null"); dc.StartTransaction(); child0.Update("c0.3Temp", (TP)parent1, null); dc.RollbackTransaction(); assertData("p0|p1:;c0.2|pN0|pN1:;c0.2|pR0:;c0.2|pNR0:;c0.2|c0.2:p1,pN1,pR0,pNR0|"); dc.StartTransaction(); child0.Update("c0.3", (TP)parent1, null); dc.CommitTransaction(); assertDataDisposeDCRecreateDCassertData("p0|p1:;c0.3|pN0|pN1|pR0:;c0.3|pNR0:;c0.3|c0.3:p1,pR0,pNR0|"); bakCsvFileSwapper.DeleteBakFiles(); // Release // ======= // Fail to release parent with stored child // ---------------------------------------- traceHeader("stored child: fail to release parent"); try { parent1.Release(); Assert.Fail(); } catch { } assertData("p0|p1:;c0.3|pN0|pN1|pR0:;c0.3|pNR0:;c0.3|c0.3:p1,pR0,pNR0|"); //Release child //------------- traceHeader("stored child: release child"); child1 = createChild("c1", parent1, parentN1, parentR0, parentNR0, isStoring: true); assertDataDisposeDCRecreateDCassertData( "p0|p1:;c0.3,c1|pN0|pN1:;c1|pR0:;c0.3,c1|pNR0:;c0.3,c1|c0.3:p1,pR0,pNR0|c1:p1,pN1,pR0,pNR0|"); dc.StartTransaction(); child1.Release(); dc.RollbackTransaction(); assertData("p0|p1:;c0.3,c1|pN0|pN1:;c1|pR0:;c0.3,c1|pNR0:;c0.3,c1|c0.3:p1,pR0,pNR0|c1:p1,pN1,pR0,pNR0|"); dc.StartTransaction(); child1.Release(); dc.CommitTransaction(); child1 = null; assertDataDisposeDCRecreateDCassertData( "p0|p1:;c0.3,c1|pN0|pN1:c1|pR0:;c0.3,c1|pNR0:;c0.3,c1|c0.3:p1,pR0,pNR0|", "p0|p1:;c0.3|pN0|pN1|pR0:;c0.3|pNR0:;c0.3|c0.3:p1,pR0,pNR0|"); //Release parent //-------------- traceHeader("stored parent: release parent"); dc.StartTransaction(); parent0.Release(); dc.RollbackTransaction(); assertData("p0|p1:;c0.3|pN0|pN1|pR0:;c0.3|pNR0:;c0.3|c0.3:p1,pR0,pNR0|"); dc.StartTransaction(); parent0.Release(); dc.CommitTransaction(); parent0 = null; assertDataDisposeDCRecreateDCassertData("p1:;c0.3|pN0|pN1|pR0:;c0.3|pNR0:;c0.3|c0.3:p1,pR0,pNR0|"); //test .bak file with complicated data structure // ============================================= traceHeader("create, update and release complicated data structure"); var parent2 = createParent("p2", isStoring: true); var parent3 = createParent("p3", isStoring: true); var parentN2 = createParentN("pN2", isStoring: true); var parentR2 = createParentR("pR2", isStoring: true); var parentNR2 = createParentNR("pRN2", isStoring: true); var child2 = createChild("c2", parent2, null, parentR2, parentNR2, isStoring: true); child2.Update("c2.0", (TP)parent2, null); parent2.Update("p2.0"); parent3.Update("p3.0"); parentN2.Update("pN2.0"); parentR2.Update("pR2.0"); parentNR2.Update("pRN2.0"); child2.Update("c2.0", (TP)parent3, (TPN)parentN2); child2.Release(); parent2.Release(); parent3.Release(); parentN2.Release(); parentR2.Release(); parentNR2.Release(); assertDataDisposeDCRecreateDCassertData("p1:;c0.3|pN0|pN1|pR0:;c0.3|pNR0:;c0.3|c0.3:p1,pR0,pNR0|"); } finally { DC.DisposeData(); } }
public IndbetalingSumCollection(CollectionTypeEnum collectionType) { CollectionType = collectionType; SetGetId(); }